MySQL5.7新特性之单表支持多个DML触发器

MySQL5.6不支持一个表有多个UPDATE/DELETE/INSERT触发器。
 下边看一个例子:
 创建三个测试表:

点击(此处)折叠或打开

  1. mysql> create table t_trig_test_01 (name varchar(10));
  2. Query OK, 0 rows affected (0.07 sec)

  3. mysql> create table t_trig_test_02 (name varchar(10));
  4. Query OK, 0 rows affected (0.03 sec)

  5. mysql> create table t_trig_test_03 (name varchar(10));
  6. Query OK, 0 rows affected (0.03 sec)

  创建两个触发器:

点击(此处)折叠或打开

  1. mysql> delimiter //
  2. mysql> create trigger trg_test_01
  3.     -> after insert on t_trig_test_01
  4.     -> for each row
  5.     -> begin
  6.     -> insert into t_trig_test_02 select * from t_trig_test_01;
  7.     -> end;
  8.     -> //
  9. Query OK, 0 rows affected (0.06 sec)

  10. mysql> delimiter //
  11. mysql> create trigger trg_test_02
  12.     -> after insert on t_trig_test_01
  13.     -> for each row
  14.     -> begin
  15.     -> insert into t_trig_test_03 select * from t_trig_test_01;
  16.     -> end;
  17.     -> //
  18. Query OK, 0 rows affected (0.11 sec)

向表t_trig_test_01插入两条测试数据:

点击(此处)折叠或打开

  1. mysql> insert into t_trig_test_01 values('steven');
  2. Query OK, 1 row affected (0.01 sec)

  3. mysql> insert into t_trig_test_01 values('steven');
  4. Query OK, 1 row affected (0.01 sec)

查看三个表的数据:

点击(此处)折叠或打开

  1. mysql> select * from t_trig_test_01;
  2. +--------+
  3. | name |
  4. +--------+
  5. | steven |
  6. | steven |
  7. +--------+
  8. 2 rows in set (0.00 sec)

  9. mysql> select * from t_trig_test_02;
  10. +--------+
  11. | name |
  12. +--------+
  13. | steven |
  14. | steven |
  15. | steven |
  16. +--------+
  17. 3 rows in set (0.00 sec)

  18. mysql> select * from t_trig_test_03;
  19. +--------+
  20. | name |
  21. +--------+
  22. | steven |
  23. | steven |
  24. | steven |
  25. +--------+
  26. 3 rows in set (0.00 sec)

  达到了预期的结果。


上一篇:DML-UPDATE


下一篇:Mysql基础(11)DML语言