SQL删除自动约束

Dim*_*nev 10 sql sql-server constraints

我用脚本在我的表上创建了一些约束而没有指定约束名.结果,我最终遇到了限制FK__DOC_OBGS___kntr___54E63309,例如.

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

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

ALTER TABLE DOC_OBGS_10 DROP CONSTRAINT LIKE 'FK__DOC_OBGS___kntr%'
Run Code Online (Sandbox Code Playgroud)

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

pkm*_*iec 5

SQL中的DDL命令不与like运算符配合使用.

但是,您可以使用information_schema视图并轻松地为drop constraint命令构建SQL,如下所示:

SELECT 'ALTER TABLE DOC_OBGS_10 DROP CONSTRAINT ' + CONSTRAINT_NAME
FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS 
WHERE CONSTRAINT_NAME LIKE 'FK__DOC_OBGS___kntr%'
Run Code Online (Sandbox Code Playgroud)


Dim*_*nev 5

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);
Run Code Online (Sandbox Code Playgroud)