私は3つのテーブルを持っています。INNER JOINを使用して2つのテーブルから削除
- InvoiceOriginal
- 請求書
- InvoiceHistory
請求書テーブルが外部キー制約を持っています。 請求書テーブルの各エントリには、対応するエントリがInvoiceoriginalにあります。
invoiceOriginalテーブルには請求書の元の値が格納され、請求書テーブルにはユーザーが変更した値が格納されます。 これは送信時に差異を得るために行われます。
私が使用していますSQLは、しかし、削除が外部キー制約のためことはできません
DELETE i
FROM invoice i
INNER JOIN InvoiceHistory aih
ON i.ClientId = aih.HistoryClientNumber
AND i.invoiceNumber = HistoryInvoiceNumber
です。私は請求書のエントリを削除する必要があるとInvoiceOriginalはかつて同じのclientIdのためInvoiceHistoryでその請求書番号のエントリがある
Invoice InvoiceOriginal InvoiceHistory
Id FK_InvoiceId ClientId
ClientId ClientId InvoiceNumber
InvoiceNumber
:下のよう
テーブルです。
にあなたの外部キー制約を変更します。 http://stackoverflow.com/questions/6260688/how-do-i-use-cascade-delete-with-sql-serverを参照してください –