应该从多个表中删除记录
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
行就会被删除。
【讨论】:
以上是关于应该从多个表中删除记录的主要内容,如果未能解决你的问题,请参考以下文章