关于 SQL 自动化
一直在思考怎么做好自动化,是运行在 mysql 之下用 API 跑嘛?还是形成数据文件,mysql 会自己定时跑批?
参考文献
1.mysql 触发器输出到某一个文件_mob64ca12f831ae的技术博客_51CTO博客
(发现一个 Edge 彩蛋,或许是博客园的彩蛋,上述链接可以直接复制!)
2.MySQL触发器trigger的使用 - 数据派 - 博客园
如果使用的是 mysql community 怎么处理触发器,具体是 Information_schema数据库下的triggers表。
3.CREATE TRIGGER (Transact-SQL) - SQL Server | Microsoft Learn
总结来说,就是运行 create trigger 之后,具体的物理位置 information_schema。这是初级的。还有更加变化的做法,例如 INTO OUTFILE (第一篇文献),直接输出 .txt 文件。抑或,直接发邮件(以前在互联网公司有领导提出过的需求)。
关于 MySQL 自带的发邮件功能的函数
5.mysql 表 触发器 发送邮件_mob64ca12d52440的技术博客_51CTO博客
用 API 发邮件
具体操作
create trigger TRIGGER_NAME
after insert on TABLE_NAME
for each row
begin
……
end
提交即可,可以动手做一做实验。
其他问题
1.报错 Access denied for user 'XXXX'@'localhost' to database 'information_schema'
解决:
1.SHOW GRANTS FOR 'XXXX'@'localhost'; //查看权限
2.GRANT INSERT ON information_schema.triggers TO 'XXXX'@'localhost'; FLUSH PRIVILEGES; // 好像确实没权限 打算换个服务器再测试
重新找了块服务器
1.创建成功
delimiter ||
create TRIGGER test001
after insert on slc_test002
for each row
begin
insert into slc_test001 ( id, event )
values ( 0, current_timestamp );
end
2.查看两张表

3.运行插入语句,插入表 slc_test002

4.看看表 slc_test001 发生了什么?

5.注意到 BEGIN …… END 中间可以放置很多语句
mysql> DELIMITER ||
mysql> CREATE TRIGGER trig2 BEFORE DELETE
-> ON work FOR EACH ROW
-> BEGIN
-> INSERT INTO time VALUES(NOW());
-> INSERT INTO time VALUES(NOW());
-> END||
mysql> DELIMITER ;
来源:MySQL触发器trigger的使用 - 数据派 - 博客园
6.另外,这里的终止符 “||” 是为啥暂时先留个疑问,知道些触发器是时候是这么干。
今日立冬
祝工作愉快
Jingyi
浙公网安备 33010602011771号