欢迎光临
我们一直在努力

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)

  达到了预期的结果。

赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。