有可能使用連接語句來限定設置爲要刪除,如下面的刪除:是否可以從同一個SQL語句中的多個表中刪除?
DELETE J
FROM Users U
inner join LinkingTable J on U.id = J.U_id
inner join Groups G on J.G_id = G.id
WHERE G.Name = 'Whatever'
and U.Name not in ('Exclude list')
不過我感興趣的刪除的連接標準雙方 - 的LinkingTable
記錄和兩用戶記錄取決於它。我無法打開級聯,因爲我的解決方案首先是實體框架代碼,而雙向關係是爲多個級聯路徑生成的。
理想情況下,我想是這樣的:
DELETE J, U
FROM Users U
inner join LinkingTable J on U.id = J.U_id
...
在語法上,這並不工作,但我很好奇,如果這樣的事情是可能的?
不,DML語句只能影響一個表。您的選擇是刪除其中一個約束(並可能使用觸發器強制執行)。 –
我認爲你需要在你的問題中弄清楚你有外鍵指向兩個方向。 –
@AaronBertrand:謝謝 - 這是我正在尋找的答案:DML語句只能影響一個表,因此我想要的是不可能的。我們必須找出解決這個問題的另一種方法。如果你寫了一個這樣的答案,我會標記它。 – bwerks