Java基础90 MySQL触发器
1、创建触发器
CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_stmt;
其中:
trigger_name:触发器名称,用户自行指定;
trigger_time:触发时机,取值为 BEFORE 或 AFTER;
trigger_event:触发事件,取值为 INSERT、UPDATE 或 DELETE;
tbl_name:建立触发器的表名,即在哪张表上建立触发器;
trigger_stmt:触发器程序体,可以是一句SQL语句,或者用 BEGIN 和 END 包含的多条语句。
由此可见,可以建立6种触发器,即:BEFORE INSERT、BEFORE UPDATE、BEFORE DELETE、AFTER INSERT、AFTER UPDATE、AFTER DELETE。
1 -- 创建触发器 2 CREATE TRIGGER trig_employeeAdd AFTER INSERT ON employee FOR EACH ROW -- 当往employee表中插入一条记录后,触发触发器trig_employeeAdd自动向test_log表中插入一条数据 3 INSERT INTO test_log(coutent,insert_time) VALUES('员工表插入了一条记录',CURDATE());
结果图:
2、查看触发器
SHOW TRIGGERS [FROM schema_name];
其中:schema_name 即 Schema 的名称,在 MySQL 中 Schema 和 Database 是一样的,也就是说,可以指定数据库名,这样就
不必先“USE database_name;”了。
1 -- 查看触发器 2 SHOW TRIGGERS FROM tt; -- 查看指定数据库(tt)中所有触发器
结果图:
3、删除触发器
DROP TRIGGER trigger_name;
其中:trigger_name是触发器的名称
1 -- 删除触发器 2 DROP TRIGGER trig_employeeAdd; -- 删除指定触发器
mysql触发器可参考:https://www.cnblogs.com/duodushu/p/5446384.html
4、附录
4.1、创建日志表
1 -- 创建日志表 2 CREATE TABLE test_log 3 ( 4 id INT PRIMARY KEY AUTO_INCREMENT, 5 coutent VARCHAR(64), 6 insert_time DATE 7 );
4.2、创建触发器
4.2.1、添加操作
1 -- 需求:当往员工表中添加一条数据之后,希望mysql同时自动往日志表中插入数据 2 -- 创建触发器(添加) 3 CREATE TRIGGER trig_employeeAdd AFTER INSERT ON employee FOR EACH ROW -- 当往employee表中插入一条记录后,触发触发器trig_employeeAdd自动向test_log表中插入一条数据 4 INSERT INTO test_log(coutent,insert_time) VALUES('员工表插入了一条记录',CURDATE()); -- CURDATE():当前系统日期
1 -- 向员工表中添加一条数据 2 INSERT INTO employee VALUES(5,'丽丽',1);
结果图:
4.2.2、修改操作
1 -- 创建触发器(修改) 2 CREATE TRIGGER tri_employeeUpd AFTER UPDATE ON employee FOR EACH ROW 3 INSERT INTO test_log(coutent,insert_time) VALUES('员工表修改了一条记录',CURDATE());
1 -- 向员工表中修改一条数据 2 UPDATE employee SET emplName="jack" WHERE id = 5;
结果图:
4.2.3、删除操作
1 -- 创建触发器(删除) 2 CREATE TRIGGER tri_employeeDel AFTER DELETE ON employee FOR EACH ROW 3 INSERT INTO test_log(coutent,insert_time) VALUES('员工表删除了一条记录',CURDATE());
1 -- 向员工表中删除一条数据 2 DELETE FROM employee WHERE id = 5;
结果图:
原创作者:DSHORE 作者主页:http://www.cnblogs.com/dshore123/ 原文出自:https://www.cnblogs.com/dshore123/p/10562468.html 欢迎转载,转载务必说明出处。(如果本文对您有帮助,可以点击一下右下角的 推荐,或评论,谢谢!) |