一尘不染

SQL删除自动命名的约束

sql

我使用脚本在表上创建了一些约束,但未指定约束名称。结果,我最终遇到了类似FK__DOC_OBGS___kntr___54E63309的限制。

是否可以在不指定确切约束名称的情况下删除该约束?

例如,类似这样的东西(不起作用)

ALTER TABLE DOC_OBGS_10 DROP CONSTRAINT LIKE 'FK__DOC_OBGS___kntr%'

问题是我们有很多与此表相关的数据库,我需要从表中删除所有约束,但是显然每个表的名称都不同。


阅读 127

收藏
2021-05-16

共1个答案

一尘不染

DECLARE @sql1 NVARCHAR(MAX);
SELECT @sql1 = c
FROM
(
    SELECT 'ALTER TABLE DOC_INVS_1 DROP CONSTRAINT ' + CONSTRAINT_NAME + '; '
    FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE TABLE_NAME = 'DOC_INVS_1'
    and CONSTRAINT_NAME LIKE 'FK__DOC_INVS___kntr%' 
) T(c);

EXEC(@sql1);
2021-05-16