触发器,你是否在删除时出现500,有的删除成功,有的删除就出现500。

原因:删除成功的是没有其它表对其的外键引用,所以才能顺利地删除。而触发器,就是当某个表进行insert delete update前或后开始执行,而具体是什么,那就要自己去写了。

讲解:请看下面的1、2、3、

DELIMITER $$   #1、替换结束标记为$$,没看到下面用到了$$

CREATE
TRIGGER `uplog`.`logIfDel` BEFORE DELETE
ON LOG
FOR EACH ROW BEGIN   #2、创建一个LOG(文章表)表触发器,当该表每一条记录被删除【delete】后【BEFORE】执行下面的3(这里有两条语句或说comment评论表与point_log点赞记录表都依赖文章表的log_id的作为其外键)


DELETE FROM COMMENT WHERE log_id=old.log_id; #3、在触发器中会在内存中生成有两种表,old表与new表,old.log_id就是被删除的文章那条记录对应的log_id,然后删除评论表与点赞记录表中对应的记录,这样我们才能顺序得删除log文章表中的记录(因为去掉了其它表对其的外键引用)。
DELETE FROM point_log WHERE log_id=old.log_id;


END$$

DELIMITER ;

 

posted @ 2021-01-12 11:20  小庄的blog  阅读(103)  评论(0编辑  收藏  举报