SQL Server - 插入和更新规范(外键关系)

时间:2018-05-24 13:33:56

标签: sql sql-server

我只是想知道是否有办法在sql server中编写一些函数或存储过程来以编程方式更改删除规则

示例:我必须将删除规则从级联更改为,反之亦然,但我不想以图形方式进行操作。

因为我必须经常做,并希望将其恢复到初始阶段。

2 个答案:

答案 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

这是从ssms生成的。你可以这样做: Generate Drop and Create Key

您可以右键单击任何密钥并为您生成代码;)