嗨,伙计们,我正试图从三个表中删除多个记录。然而,它并没有像预期的那样工作。
我的问题:
DELETE FROM offer, offer_products, offer_product_addons
USING offer, offer_products, offer_product_addons
WHERE offer.offer_number IS NULL
AND offer_products.offer_id = offer.id
AND offer_product_addons.offer_products_id = offer_products.id;
我的猜测是,当在其他表中找不到记录时,它不会删除记录。我已经尝试了join,但是它只删除了主表中的内容。
1条答案
按热度按时间kknvjkwl1#
最好使用
CASCADE
多个操作的函数,即删除或更新。CASCADE
-如果打开UPDATE CASCADE
或者ON UPDATE SET NULL
递归以更新它以前在级联过程中更新过的同一个表,其行为类似于RESTRICT
. 这意味着您不能在更新级联或上使用自引用UPDATE SET NULL
操作。这是为了防止级联更新产生无限循环。自我参照ON DELETE SET NULL
另一方面,是可能的,因为是一个自我参照ON DELETE CASCADE
. 级联操作的嵌套深度不能超过15层。有时,了解哪个表受
MySQL ON DELETE CASCADE
从父表中删除数据时的引用操作。您可以从information\u schema数据库中的引用\u约束中查询此数据,如下所示:代码:
例子:
例如,要查找与具有
CASCADE delete rule
在classicmodels数据库中,使用以下查询:另一个可供选择的例子
DELETE CASCADE
:如果你的
cascading deletes
如果因为某个产品属于某个已被杀死的类别而对其进行核爆,那么您的外键设置不正确。对于示例表,应设置以下表: