在我的Oracle
数据库中,我希望从2个不同的表中删除行。
问题是,如果我从犬舍先删除行,那么我想在DOG表删除行无法找到要删除。
下面是我SQL statements
要从两个表中删除的内容。
DELETE FROM KENNEL WHERE COUNTRY_ID IS NULL;
DELETE FROM DOG WHERE ID IN (SELECT DOG_ID FROM KENNEL WHERE COUNTRY_ID IS NULL);
我怎么能这样解决这个问题的2只删除发生在同一时间,并确保这两个表中的行被删除?
注意:我不能从DOG中删除,然后从KENNEL中删除,因为KENNEL是必须首先删除的子记录。
我会像这样执行这组删除操作:
-- delete rows from child table first
DELETE FROM KENNEL WHERE COUNTRY_ID IS NULL;
-- now delete any parent rows that don't have any child records
DELETE FROM DOG WHERE ID not exists (SELECT DOG_ID FROM KENNEL);
这样做意味着如果狗窝表中给定的dog_id的所有country_id都不都是空的,则您不会尝试删除父记录-如果尝试,则会出错。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句