[英]Updating a Foreign Key constraint with ON DELETE CASCADE not updating?
我們在SQL Server 2005 DB中已經意識到一些外鍵沒有On Delete Cascade屬性集,當我們嘗試刪除一些記錄時,它會給我們一些參考錯誤。
使用Management Studio我編寫了DROP
和CREATE
SQL腳本,但似乎CREATE
無法正常工作。
DROP
:
USE [FootprintReports]
GO
IF EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK__SUBSCRIPTIONS_Reports]') AND parent_object_id = OBJECT_ID(N'[dbo].[_SUBSCRIPTIONS]'))
ALTER TABLE [dbo].[_SUBSCRIPTIONS] DROP CONSTRAINT [FK__SUBSCRIPTIONS_Reports]
和CREATE
USE [FootprintReports]
GO
ALTER TABLE [dbo].[_SUBSCRIPTIONS] WITH CHECK ADD CONSTRAINT [FK__SUBSCRIPTIONS_Reports] FOREIGN KEY([PARAMETER_ReportID])
REFERENCES [dbo].[Reports] ([ID])
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[_SUBSCRIPTIONS] CHECK CONSTRAINT [FK__SUBSCRIPTIONS_Reports]
如果我在GUI中手動更改“刪除”的值,則在刪除並重新創建后,“未刪除”將無法正確更新。
作為測試,我將GUI中的Delete規則Set Null
為Set Null
。 它正確刪除,並重新創建沒有錯誤。 如果我回到GUI,它仍然顯示Set Null
作為刪除規則。
我做錯了什么嗎? 或者是否有另一種方法來編輯約束以添加ON DELETE CASCADE
規則?
你的方法看起來正確。 ALTER TABLE
是編輯約束的唯一方法。 也許Management Studio需要數據刷新。 嘗試右鍵單擊“刷新”,或關閉應用程序並重新打開它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.