sql - 使用 INNER JOIN 从 2 个表中删除

标签 sql sql-server sql-delete

我有 3 张 table 。

  • 发票原件
  • 发票
  • 发票历史记录

发票表有外键约束。 发票表中的每个条目在 Invoiceoriginal 中都有对应的条目。

invoiceOriginal 表存储发票的原始值,invoice 表存储用户修改的值。 这样做是为了在提交时获得差异。

我使用的SQL是

DELETE i
FROM invoice i
INNER JOIN InvoiceHistory aih
   ON i.ClientId = aih.HistoryClientNumber
   AND i.invoiceNumber = HistoryInvoiceNumber

但是由于外键约束,删除是不可能的。

表格如下:

Invoice         InvoiceOriginal         InvoiceHistory
 Id                FK_InvoiceId            ClientId
 ClientId          ClientId                InvoiceNumber
 InvoiceNumber

一旦 InvoiceHistory 中存在同一 clientId 的发票编号条目,我需要删除发票和 InvoiceOriginal 中的条目。

最佳答案

您不能一次对多个表发出删除语句,在删除父记录之前,您需要为每个相关表执行单独的删除语句

关于sql - 使用 INNER JOIN 从 2 个表中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37050644/

相关文章:

sql - 更改存储过程显示 `Argument data type ntext is invalid for argument 1 of left function` 错误

sql-server - 为什么 Access/SQL Server 中的零日期是 1899-12-30,而不是 12/31?

mysql - 如何删除 mySQL 重复条目

Android 房间数据库删除不起作用?

php - 我可以让 SQL 查询在每一行上进行两次匹配吗?

java - SQL Server 2008 - 如何同时获取列名和值?

java - 看看我的sql查询过滤方法,安全吗?

sql - SQL中如何根据多个 'tags'查询数据?

sql - DB2 和 Oracle 上的扫描/更新操作统计信息

c++ - SQLite 在最后一次引用删除时删除共享行