我有一张表,比如用户表的id,会被其他很多表引用,如果我删除一个用户(是逻辑删除,不是真正的删除)的时候,还要查很多表判断这个用户是不是被引用了,如果被用了就不让删除,现在是删除的时候还要查很多表,有没有什么好的办法可以解决,请高手指教!
我有一个办法但感觉不好,就是在删除的时候,先开启事务,调一个删除的方法,如果抛了异常并判断异常的code,如果 是外键约束的错误,则说明已经有引用了,最后只关闭事务,都不提交,这样方法不知道行不行!
我有一个办法但感觉不好,就是在删除的时候,先开启事务,调一个删除的方法,如果抛了异常并判断异常的code,如果 是外键约束的错误,则说明已经有引用了,最后只关闭事务,都不提交,这样方法不知道行不行!
delete from xx where id=100;
set @@foreign_key_checks=ON;
你在TRIGGER中判断一下,也要判断N个表
REFERENCES tbl_name (index_col_name,...)
[MATCH FULL | MATCH PARTIAL | MATCH SIMPLE]
[ON DELETE reference_option]
[ON UPDATE reference_option]reference_option:
RESTRICT | CASCADE | SET NULL | NO ACTION