MySQL 8 触发器的创建与操作
发布时间:2022-12-13 10:47:14 所属栏目:MySql教程 来源:
导读: 触发器是指在某个事件之前或之后执行某些特定的操作。触发器的动作时间有BEFOR和AFTER,这表示在数据库表的某一行发生修改事件之前或之后调用。
触发器三个事件:INSERT,DELETE 和 UPDATE。
可
触发器三个事件:INSERT,DELETE 和 UPDATE。
可
|
触发器是指在某个事件之前或之后执行某些特定的操作。触发器的动作时间有BEFOR和AFTER,这表示在数据库表的某一行发生修改事件之前或之后调用。 触发器三个事件:INSERT,DELETE 和 UPDATE。 可以使用多个触发器,并通过 FOLLOWS或PRECEDES 关键字指定触发器调用的先后顺序。 例如mysql触发器,对 salaries 表中的 sarary 在插入时进行四舍五入处理后再插入,创建一个BEFOR INSERT触发器: shell> vi before_insert_trigger.sql DROP TRIGGER IF EXISTS salary_round; DELIMITER $$ CREATE TRIGGER salary_round BEFORE INSERT ON salaries FOR EACH ROW BEGIN SET NEW.salary=ROUND(NEW.salary); END $$ DELIMITER ; 通过SOURCE语句创建触发器: mysql> SOURCE before_insert_trigger.sql; Query OK, 0 rows affected (0.06 sec) Query OK, 0 rows affected (0.00 sec) 测试这个触发器: mysql> INSERT INTO salaries VALUES(10002, 100000.79, CURDATE(), '9999-01-01'); Query OK, 1 row affected (0.04 sec) mysql> SELECT * FROM salaries WHERE emp_no=10002 AND from_date=CURDATE(); +--------+--------+------------+------------+ | emp_no | salary | from_date | to_date | +--------+--------+------------+------------+ | 10002 | 100001 | 2017-06-18 | 9999-01-01 | +--------+--------+------------+------------+ 1 row in set (0.00 sec) 创建一个BEFORE UPDATE 触发器: # 选创建一张表 mysql> CREATE TABLE salary_audit (emp_no int, user varchar(50), date_modified date); # 再创建一个触发器,注意是在salary_round之前执行的,所以使用了 PRECEDES shell> vi before_insert_trigger.sql DELIMITER $$ CREATE TRIGGER salary_audit BEFORE INSERT ON salaries FOR EACH ROW PRECEDES salary_round BEGIN INSERT INTO salary_audit VALUES(NEW.emp_no, USER(), CURDATE()); END; $$ DELIMITER ; 创建并测试: mysql> INSERT INTO salaries VALUES(10003, 100000.79, CURDATE(), '9999-01-01'); Query OK, 1 row affected (0.06 sec) mysql> SELECT * FROM salary_audit WHERE emp_no=10003; +--------+----------------+---------------+ | emp_no | user | date_modified | +--------+----------------+---------------+ | 10003 | root@localhost | 2017-06-18 | +--------+----------------+---------------+ 1 row in set (0.00 sec) 查看所有触发器: SHOW TRIGGERS\G 查看某个触发器: SHOW CREATE TRIGGER \G (编辑:我爱制作网_池州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐


浙公网安备 33038102330577号