情景:A表和B表,一对一关系。当删除A表中的一条数据时,B表中与A表关联的数据也要删除,如删除A.clo_a=1的数据,B.col_a=1的数据,也要删除! 表A(user_step_group) +--------+--------+-----------------+ | usg_id | userid | usg_total_steps | +--------+--------+-----------------+ | 1 | 5047 | 46339 | | 2 | 5046 | 0 | +--------+--------+-----------------+ 表B(user_step_group_member) +---------+--------+------------+----------------+-----------------+ | usgm_id | usg_id | usgm_steps | usgm_get_steps | usgm_help_steps | +---------+--------+------------+----------------+-----------------+ | 1 | 1 | 17134 | 500 | 377 | | 2 | 1 | 24754 | 500 | 3074 | +---------+--------+------------+----------------+-----------------+ 触发器 DELIMITER $$ CREATE TRIGGER delete_group_relation_info AFTER DELETE ON `user_step_group` FOR EACH ROW BEGIN DELETE FROM `user_step_group_member` WHERE usg_id = old.usg_id; END$$ DELIMITER ; 总结: 关于删除的触发器,有一个点可能会让人产生困惑,即删除A表的一条数据,B表的数据删除的时候,怎么呼应A表的那条数据?一开始,我这里做的是关联删除,结果,想删的数据(一条)没删掉,不删除的(多条)数据全删了,瞬间蒙圈!这是个误区,一定要注意,BEGIN和END之间的那个语句,一定不是关联删除,而是在where子句通过【old】这个关键字来处理!
MySQL触发器之删除:一对一,实践操作
猜你喜欢
转载自blog.csdn.net/LDR1109/article/details/100926109
今日推荐
周排行