sql - 删除未命名的约束

标签 sql sql-server

我创建了一些没有明确名称的外键。
然后我发现 SQL 生成了疯狂的名字,比如 FK__Machines__IdArt__760D22A7 .猜猜它们会在不同的服务器上以不同的名称生成。
是否有任何不错的函数可以删除作为参数传递的表和相关字段的未命名 FK 约束?

最佳答案

要删除列上的单个未命名默认约束,请使用以下代码:

DECLARE @ConstraintName VARCHAR(256)
SET @ConstraintName = (
     SELECT             obj.name
     FROM               sys.columns col 

     LEFT OUTER JOIN    sys.objects obj 
     ON                 obj.object_id = col.default_object_id 
     AND                obj.type = 'F' 

     WHERE              col.object_id = OBJECT_ID('TableName') 
     AND                obj.name IS NOT NULL
     AND                col.name = 'ColunmName'
)   

IF(@ConstraintName IS NOT NULL)
BEGIN
    EXEC ('ALTER TABLE [TableName] DROP CONSTRAINT ['+@ConstraintName+']')
END

如果您想对默认列执行此操作,这可能比原始问题更常见,并且我相信很多人会从 Google 搜索中找到此问题,那么只需更改行:
obj.type = 'F'


obj.type = 'D'

关于sql - 删除未命名的约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/670946/

相关文章:

sql - 如何从 DataGrip 中的环境变量设置数据源密码?

java - 使用 JPA 进行多项选择

sql - 年月日 hh :mm format in Sql Server

c# - C#查询两个数据库的数据

php - 动态表单字段创建并保存在数据库php mysql中

sql - select and join 错误必须出现在 GROUP BY 子句中或在聚合函数中使用

java - 我可以在 JPA 2 的 native 查询中有多个语句吗

sql - 如何从 Visual Studio 2013 或 2010 中的解决方案资源管理器运行 sql 脚本

python - 使用 Pandas 将 SQL 导出到 Excel,如何下拉?

sql-server - 主要关键零部件 list