2017-03-10 146 views
0

我創建了一個查詢,它將從具有'Employee'的三個表中刪除行。 當我執行它時,它只從一個表刪除行tblEmployeeType。我試着在刪除旁邊加入別名,但SQL不支持它。是否有任何替代方法從多個表中刪除行?或者我在我的查詢中忘記了一些代碼,或者我應該單獨刪除查詢?謝謝。從多個表中刪除行

DELETE a 
    FROM tblEmployeeType a INNER JOIN 
     tbl_Selected_AccessType b 
     ON a.EmpTypeName = b.UserType INNER JOIN 
     tbl_AccessType_AllFunction c 
     ON a.EmpTypeName = c.UserType 
    WHERE a.EmpTypeName = 'Employee'` 
+0

如果在表之間定義了外鍵,則可以使用DELETE CASCADE在單個查詢中從這些表中刪除行。或者您可以使用刪除語句創建存儲過程。 因爲無法從單個查詢中的多個表中刪除行,如果它們不相關。 –

回答

1

INSERTUPDATE語句只能直接在同一時間影響一個表。如果您使用ON DELETE CASCADE配置了外鍵,則子記錄將與父記錄一起刪除。無論使用級聯,您應該在桌面上有外鍵,以便您的DELETE不會留下具有破壞參照完整性的孤兒子記錄。

實現影響INSERTUPDATE中其他表的另一種方法是在表上使用觸發器。如果您想在盲目刪除子記錄之前進行檢查,這可能是可取的。