mysql - MySQL 触发器是否激活其他触发器?

标签 mysql database triggers relational-database relationship

例如,如果我定义了一个触发器,在删除该帖子时删除该帖子的所有评论。删除用户时删除所有帖子的触发器是否会激活另一个触发器从而删除评论?

最佳答案

简短的回答是是的。

演示:

mysql> create table users (id serial primary key);

mysql> create table posts (id serial primary key, userid bigint unsigned);

mysql> create table comments (id serial primary key, postid bigint unsigned);

mysql> create trigger udel after delete on users for each row delete from posts where userid = OLD.id;

mysql> create trigger pdel after delete on posts for each row delete from comments where postid = OLD.id;

mysql> insert into users values (123);
Query OK, 1 row affected (0.00 sec)

mysql> insert into posts values (456, 123);
Query OK, 1 row affected (0.00 sec)

mysql> insert into comments values (789, 456);
Query OK, 1 row affected (0.00 sec)

mysql> select * from users;
+-----+
| id  |
+-----+
| 123 |
+-----+
1 row in set (0.00 sec)

mysql> select * from posts;
+-----+--------+
| id  | userid |
+-----+--------+
| 456 |    123 |
+-----+--------+
1 row in set (0.00 sec)

mysql> select * from comments;
+-----+--------+
| id  | postid |
+-----+--------+
| 789 |    456 |
+-----+--------+

现在我们尝试删除,它应该级联到其他表:

mysql> delete from users;
Query OK, 1 row affected (0.03 sec)

mysql> select * from posts;
Empty set (0.00 sec)

mysql> select * from comments;
Empty set (0.00 sec)

关于mysql - MySQL 触发器是否激活其他触发器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27197648/

相关文章:

创建自动编号的 Oracle 触发器

mysql - SQL查询帮助: bring data where the field is not empty

php - 动态表单、PHP 和 MYSQL

php - 如何在 MySQL/PHP 中选择特定条目

java - Tomcat 集成在 Eclipse 数据库连接中

sql - 为什么你不应该使用 nosql 进行金融交易

MYSQL内连接结果为空

database - 我应该即时计算统计数据,还是使用 cron 作业生成?

对于自定义事件,jQuery 触发器不会使用 bind() 或 on() 触发

MYSQL触发器插入或更新不同的表