我创建了一些没有明确名称的外键。
然后我发现 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/