要添加“级联删除”在SQL Server Management Studio中现有的外键:
。首先,选择外键,然后打开它的“删除并创建要。”一个新的查询窗口。
然后,只需添加ON DELETE CASCADE
到ADD CONSTRAINT
命令:
并点击 “执行” 按钮来运行此查询。
顺便说一句,让你的外键的列表,看看哪些已经“级联删除”开启时,您可以运行此脚本:
SELECT
OBJECT_NAME(f.parent_object_id) AS 'Table name',
COL_NAME(fc.parent_object_id,fc.parent_column_id) AS 'Field name',
delete_referential_action_desc AS 'On Delete'
FROM sys.foreign_keys AS f,
sys.foreign_key_columns AS fc,
sys.tables t
WHERE f.OBJECT_ID = fc.constraint_object_id
AND t.OBJECT_ID = fc.referenced_object_id
ORDER BY 1
而且如果你发现,你可以“T DROP
特定表由于外键约束,但你不能工作了这FK是造成问题,那么你可以使用我在这里提供的SQL:
How can I list all foreign keys referencing a given table in SQL Server?
的SQL在那篇文章中列出了所有引用的FK一个特定的表格。
希望这一切都有所帮助。
特别是长指。
@marc_s - 实际上,您可以针对两侧的完全相同的列添加第二个外键,并且它将正常工作。如果在没有停机的生产环境中工作,可能最好将级联引入新的FK,然后丢弃旧的FK,而不是在没有FK时留下一个窗口。 (刚刚在SQL 2008上测试过) – 2011-06-07 07:50:20
这是正确的。我尝试了这一点,它的工作原理。没有必要放弃第一个外键约束。谢谢回复。 – 2011-06-08 03:39:14