1

我想从多个表中删除数据,这些数据肯定位于ad_master中,但子表会不时变化。我尝试了以下查询,但它至少不会删除一条记录并保持沉默。如果它们存在于我的任何给定表中,我想删除与给定数字($delete_no)关联的每条记录。

DELETE am,sub1,sub2,sub3
FROM ad_master am
INNER JOIN ad_vehicles sub1
ON sub1.Ad_no=am.Ad_no
INNER JOIN ad_properties sub2
ON sub2.Ad_no=am.Ad_no
INNER JOIN ad_electronics sub3
ON sub3.Ad_no=am.Ad_no
WHERE am.Ad_no=$delete_no

请指导我解决这个问题。谢谢。

4

2 回答 2

5

尝试 LEFT JOIN 而不是 INNER。使用 INNER JOIN 可以使两个表相交,如果 $delete_no 在 ad_vehicles 中不存在,则结果为空。

于 2013-01-28T23:36:23.897 回答
0

您正在尝试实现参照完整性。让数据库去做吧,它比你做的要好得多。Ad_no 应该是除 master 之外的所有表中的外键,在每种情况下都引用 master,并定义为删除级联。然后您所要做的就是删除主行。

于 2013-01-28T23:47:35.070 回答