千家信息网

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

发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,MySQL5.6不支持一个表有多个UPDATE/DELETE/INSERT触发器。下边看一个例子:创建三个测试表:点击(此处)折叠或打开mysql> create table t_trig_test_
千家信息网最后更新 2025年01月20日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