做了以下实验。
主表users,从表sales,外键 uid ( on delete casecade)
创建了触发器
DELIMITER //
create trigger tri_3 after delete on users
for each row
begin
if(exists(select * from sales where uid = old.uid))
then update sales set uid = null where uid = old.uid;
end if;
end//
DELIMITER ;
但删除主表的数据时,可能的结果有两个:
一、数据被删除,外键先执行了
二、从表的uid置为了null ,数据还在,触发器先执行了。
这里删除主表uid=00003的一条数据之后
从表的数据也被删除
结论:仅代表个人见解,外键先执行。