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

欢迎转载,转载务必说明出处。(如果本文对您有帮助,可以点击一下右下角的 推荐,或评论,谢谢!

posted @ 2019-03-20 00:54  DSHORE  阅读(799)  评论(0编辑  收藏  举报