Mam 3 tabele.Usuń z 2 tabel przy użyciu INNER JOIN
- InvoiceOriginal
- Faktura
- InvoiceHistory
tabeli faktura ma klucz obcy. Każdy wpis w tabeli faktury ma odpowiedni wpis w polu Invoiceoriginal.
Tabela invoiceOriginal przechowuje oryginalne wartości faktury, a tabela faktury przechowuje wartości, które zostały zmodyfikowane przez użytkownika. robi się to, aby uzyskać różnice w momencie przesyłania.
SQL używam jest
DELETE i
FROM invoice i
INNER JOIN InvoiceHistory aih
ON i.ClientId = aih.HistoryClientNumber
AND i.invoiceNumber = HistoryInvoiceNumber
jednak usunięcie nie jest możliwe ze względu na ograniczenia klucz obcy.
Stół jest w ramach:
Invoice InvoiceOriginal InvoiceHistory
Id FK_InvoiceId ClientId
ClientId ClientId InvoiceNumber
InvoiceNumber
muszę usunąć wpis w fakturze i InvoiceOriginal raz znajduje się wpis dla tego numeru faktury w InvoiceHistory dla tego samego ClientID.
jeśli wymagane usunięcie w jednym zapytaniu użyć ON DELETE CASCADE w schemacie tabeli. refer http://stackoverflow.com/questions/6260688/how-do-i-use-cascade-delete-with-sql-server –