我只是想知道是否有办法在sql server中编写一些函数或存储过程来以编程方式更改删除规则?
示例:我必须将删除规则从级联更改为无,反之亦然,但我不想以图形方式进行操作。
因为我必须经常做,并希望将其恢复到初始阶段。
答案 0 :(得分:1)
您无法更改外键约束以更改级联选项,您必须删除它并使用所需选项再次创建它。确保在交易中设置它,因为您不希望在更改过程中卡住不一致的数据。
示例的alter命令:
ALTER TABLE [SchemaName].[TableName] DROP CONSTRAINT [ConstraintName]
ALTER TABLE [SchemaName].[TableName] WITH CHECK ADD CONSTRAINT [ConstraintName]
FOREIGN KEY([ColumnName]) REFERENCES [SchemaName].[YetAnotherTableName]([ColumnName]) ON DELETE CASCADE;
答案 1 :(得分:0)
假设您有一个已经被称为fk_table1_table2且没有cascade none的外键。 您必须删除约束,然后使用cascade重新创建约束:
ALTER TABLE [dbo].[TableName] DROP CONSTRAINT [FK_Table1_Table2]
GO
ALTER TABLE [dbo].[TableName] WITH NOCHECK ADD CONSTRAINT [FK_Table1_Table2] FOREIGN KEY([Table2])
REFERENCES [dbo].[Table2] ([ID])
ON UPDATE CASCADE
ON DELETE CASCADE
NOT FOR REPLICATION
GO
ALTER TABLE [dbo].[TableName] CHECK CONSTRAINT [FK_Table1_Table2]
GO
您可以右键单击任何密钥并为您生成代码;)