gpt4 book ai didi

sql - 如何从 SQL Server 数据库中删除所有外键?

转载 作者:行者123 更新时间:2023-12-03 02:16:08 24 4
gpt4 key购买 nike

我想删除具有以下条件的所有外键。

SELECT CONSTRAINT_NAME
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE TABLE_NAME IN ('Table1', 'Table2')
AND CONSTRAINT_NAME LIKE '%FK__%__DL%'

最佳答案

有一个名为INFORMATION_SCHEMA.TABLE_CONSTRAINTS的表,它存储所有表约束。 FOREIGN KEY 的约束类型也保留在该表中。因此,通过过滤这种类型,您可以访问所有外键。

SELECT  *
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE CONSTRAINT_TYPE = 'FOREIGN KEY'

如果您创建动态查询(用于DROP-ing外键)来更改表,则可以达到更改所有表的约束的目的。

WHILE(EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE CONSTRAINT_TYPE = 'FOREIGN KEY' AND TABLE_NAME IN ('Table1', 'Table2') AND CONSTRAINT_NAME LIKE '%FK__%__DL%'))
BEGIN
DECLARE @sql_alterTable_fk NVARCHAR(2000)

SELECT TOP 1 @sql_alterTable_fk = ('ALTER TABLE ' + TABLE_SCHEMA + '.[' + TABLE_NAME + '] DROP CONSTRAINT [' + CONSTRAINT_NAME + ']')
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE CONSTRAINT_TYPE = 'FOREIGN KEY'
AND TABLE_NAME IN ('Table1', 'Table2')
AND CONSTRAINT_NAME LIKE '%FK__%__DL%'

EXEC (@sql_alterTable_fk)
END

EXISTS 函数及其参数确保外键至少有一个约束。

关于sql - 如何从 SQL Server 数据库中删除所有外键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43044683/

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