簡體   English   中英

使用ON DELETE CASCADE更新外鍵約束不更新?

[英]Updating a Foreign Key constraint with ON DELETE CASCADE not updating?

我們在SQL Server 2005 DB中已經意識到一些外鍵沒有On Delete Cascade屬性集,當我們嘗試刪除一些記錄時,它會給我們一些參考錯誤。

使用Management Studio我編寫了DROPCREATE 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 NullSet Null 它正確刪除,並重新創建沒有錯誤。 如果我回到GUI,它仍然顯示Set Null作為刪除規則。

我做錯了什么嗎? 或者是否有另一種方法來編輯約束以添加ON DELETE CASCADE規則?

你的方法看起來正確。 ALTER TABLE是編輯約束的唯一方法。 也許Management Studio需要數據刷新。 嘗試右鍵單擊“刷新”,或關閉應用程序並重新打開它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM