在sqlserver2005db中,我们已经意识到一些外键没有设置on delete cascade属性,这在尝试删除某些记录时会导致一些引用错误。
使用我编写的管理工作室
DROP
和
CREATE
SQL的,但似乎
创造
工作不正常。
这个
跌落
:
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]
以及
创造
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中手动更改on delete的值,则在删除并重新创建之后,on delete不会正确更新。
作为测试,我在gui中将delete规则设置为
Set Null
.
它正确地下降,并重新创建没有错误。
如果我回到图形用户界面,它仍然显示
置空
作为删除规则。
我做错什么了吗?或者有其他方法来编辑约束以添加
ON DELETE CASCADE
规则?