◆请教,这样的数据如何处理?急!◆
t1是主表,t1中的字段id在其他表中有外键引用,在后台使用的是delete from t1 where id in (2,3)这样的SQL来删除,可是当表t1里id=2的这条数据已经被其他表引用的时候,删除的时候会报错,且所有记录都删除不了,请问如何做到可以删除没有引用的数据,且提示id=2这条数据有引用不能删除?望高手赐教,谢谢!! 这个,单条循环处理?删之前先看其他表里有没引用,然后再弄吧或者或者你在t1表加个字段标识是否引用了
抑或者使用子查询??? 这个,单条循环处理?删之前先看其他表里有没引用,然后再弄吧
或者或者你在t1表加个字段标识是否引用了
抑 ...
ywqbestever 发表于 2010-4-7 12:40 http://codeigniter.org.cn/forums/images/common/back.gif
如果是t1表加个字段标识是否引用的话,那如果有多表引用如何处理啊?每个引用表都检查?
如果是删之前看其他表里有没有引用,那每次加引用该外键的表,都要改代码啊?子查询也是一样啊。
有更好的更标准的处理方法吗? 回复 3# sking
给t1表加是否引用标识,多表引用的话就存json变量吧
{"引用表1":"0","引用表2":"1",......} 回复sking
给t1表加是否引用标识,多表引用的话就存json变量吧
{"引用表1":"0","引用表2":"1",......} ...
ywqbestever 发表于 2010-4-7 17:40 http://codeigniter.org.cn/forums/images/common/back.gif
这样也很麻烦啊,在JAVA里,通常是把删除代码写在try,catch里,如果删除时报异常,那么就提示,在PHP里如何实现?大家一般如何做的? php也有try catch php也有try catch
ywqbestever 发表于 2010-4-8 22:48 http://codeigniter.org.cn/forums/images/common/back.gif
但php的try catch有问题,要给出明确的错误,而不是自动捕捉,感觉和用IF判断语句没什么区别啊,如果这样,还是要到数据库中去检查啊,还是很麻烦啊 MySQL外键定义默认值是ON DELETE RESTRICT,意思是删除时进行限制,试把表的外键定义改为ON DELETE SET NULL。
但要注意外键是否NOT NULL。 MySQL外键定义默认值是ON DELETE RESTRICT,意思是删除时进行限制,试把表的外键定义改为ON DELETE SET NUL ...
燃雲 发表于 2010-4-10 06:51 http://codeigniter.org.cn/forums/images/common/back.gif
这样的话是不是删除主表的数据,其他应用该表外键的字段都会变成NULL?可是这样数据会出现问题,我要的效果是如果有被应用,就直接弹出不能删除的提示信息。这个怎么实现呢?谢谢 没有人知道吗?
页:
[1]