gpt4 book ai didi

sql-server - 如何在 SQL Server 中使用级联删除?

转载 作者:行者123 更新时间:2023-12-01 16:19:42 25 4
gpt4 key购买 nike

我有 2 个表:T1 和 T2,它们是包含数据的现有表。 T1 和 T2 之间存在一对多关系。当删除 T1 中的记录时,如何更改表定义以在 SQL Server 中执行级联删除,T2 中的所有关联记录也会被删除。

他们之间存在外部约束。我不想删除表或创建触发器来删除 T2。例如,当我删除一名员工时,所有评论记录也应该消失。

T1 - 员工,

Employee ID      
Name
Status

T2 - 绩效评估,

Employee ID - 2009 Review
Employee ID - 2010 Review

最佳答案

要将“级联删除”添加到 SQL Server Management Studio 中的现有外键:

首先,选择您的外键,然后在新的查询窗口中打开它的“DROP and Create To..”。

enter image description here

然后,只需将 ON DELETE CASCADE 添加到 ADD CONSTRAINT 命令即可:

n然后点击“执行”按钮来运行此查询。

顺便说一句,要获取外键列表,并查看哪些外键打开了“级联删除”,您可以运行以下脚本:

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

如果您发现由于外键约束而无法DROP特定表,但又无法找出哪个 FK 导致了问题,那么您可以运行此命令命令:

sp_help 'TableName'

该文章中的 SQL 列出了引用特定表的所有 FK。

希望这一切有帮助。

为长手指道歉。我只是想表达一个观点。

关于sql-server - 如何在 SQL Server 中使用级联删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6260688/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com