我想在SQL Server 2016中使用時態表。當前時態表不允許使用ON DELETE CASCADE。我怎樣才能實現觸發器來模仿行爲?我想保留外鍵,因爲我在我的應用程序中使用了實體框架的導航屬性。如何實現SQL Server觸發器作爲ON DELETE CASCADE的替代方法?
我認爲後觸發不起作用,因爲刪除語句不適用於外鍵條件。
假設我們有以下簡單的情況:
- UserRole.UserId:外鍵USER.ID
- UserRole.RoleId:外鍵Role.Id
如果我刪除Id == 2的角色比我想要刪除UserRole中的第二和第四行。如何在時態表中沒有ON DELETE CASCADE的情況下執行此操作?
你有沒有聽說過的'而是Triggers'的,google一下。 –
是的,但INSTEAD OF觸發器不允許在當前表或歷史表上以避免使DML邏輯無效。 AFTER觸發器僅在當前表格上被允許。它們被阻止在歷史記錄表上以避免使DML邏輯無效。 – cSteusloff
考慮一下 - 如果通過類似觸發器的方式實現'ON DELETE CASCADE'很微不足道,爲什麼微軟的開發者沒有使用這種機制實現'ON DELETE CASCADE',而不是將其列爲限制?您嘗試的任何解決方法可能會遇到類似的限制。 –