我们在SQL Server 2005数据库中发现一些外键没有设置On Delete Cascade属性,这在我们尝试删除某些记录时会导致一些引用错误。
使用管理工具我编写了DROP和CREATE SQL语句,但似乎CREATE并没有正确执行。
DROP语句如下:
如果我在GUI中手动更改On Delete的值,在删除和重新创建后,On Delete没有正确更新。
作为测试,我将GUI中的Delete规则设置为“Set Null”。 它成功地被删除,并且重新创建没有错误。 如果我回到GUI中,它仍然显示“Set Null”作为删除规则。
我做错了什么吗?还是有其他方法可以编辑约束以添加“ON DELETE CASCADE”规则?
使用管理工具我编写了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]
以及创建
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”。 它成功地被删除,并且重新创建没有错误。 如果我回到GUI中,它仍然显示“Set Null”作为删除规则。
我做错了什么吗?还是有其他方法可以编辑约束以添加“ON DELETE CASCADE”规则?