应该从多个表中删除记录

Posted

技术标签:

【中文标题】应该从多个表中删除记录【英文标题】:Records should be deleted from multiple tables 【发布时间】:2017-11-23 06:42:20 【问题描述】:

我有 2 个表格 Taxcon 和 Tax 。如果我删除了 taxcon 中的记录,那么应该删除 taxcon 中的相关记录

我想要一个命名查询。

我试过这个查询

delete t,c from TaxCon t JOIN t.tax c WHERE  c.code=:code

->这里我的意图是在“code”字段的帮助下删除税表中的记录,并且应该删除Taxcon中的相关记录 但我收到一个错误,称为 查询包含格式错误的结尾

【问题讨论】:

为什么不将它们配置为FOREIGN KEY ON DELETE CASCADE?然后它们将被自动删除。 【参考方案1】:

您需要一个连接条件,以便只删除两个表的相关行。

DELETE t, c
FROM TaxCon AS t
JOIN Tax AS c ON t.code = c.code
WHERE c.code = :code

但是您可以通过声明外键来自动实现这一点。

ALTER TABLE TaxCon ADD CONSTRAINT FOREIGN KEY (code) REFERENCES Tax (code) ON DELETE CASCADE;

那么你只需要删除Tax中的行,相关的TaxCon行就会被删除。

【讨论】:

以上是关于应该从多个表中删除记录的主要内容,如果未能解决你的问题,请参考以下文章

从表中的多个重复项中删除特定记录

从具有多个基表的视图中删除记录的最有效方法?

如何根据某个字段从数据库表中删除重复项

如何删除雪花数据库表中的重复记录

自动从 Mysql 表中删除的记录

无法从多个表中删除