重命名SQL Server中的约束?


79

是否可以在SQL Server中重命名约束?我不想删除并创建一个新的约束,因为此约束会影响其他已经存在的约束,因此我将不得不重新创建/更改这些约束。

Answers:


75

您可以使用sp_rename来重命名@objtype = 'OBJECT'

这适用于sys.objects中列出的包含约束的对象


14
以防万一您无法使用它,它在MSDN中说- “重命名约束时,必须指定约束所属的架构。”
Black Light

1
对于PK约束,无需@objtype = 'OBJECT'指定。只需指定旧名称和新名称即可。
pkuderov '17

72

经过进一步的挖掘后,我发现它实际上必须采用以下形式:

EXEC sp_rename N'schema.MyIOldConstraint', N'MyNewConstraint', N'OBJECT'

资源


7
这是更精确的答案。其他形式仅起作用,因为大多数人将所有表都转储到默认模式(通常为“ dbo:”)中,并且可以省略默认模式。但是,如果使用多个模式,这是正确的(并且您始终可以声明“ dbo” )
Godeke '17

从源头上,并不像你所需要的N'OBJECT”参考
Abrham史密斯


8

答案是真的:

exec sp_rename 
@objname = 'Old_Constraint',
@newname = 'New_Constraint',
@objtype = 'object'

3

我知道这是一个古老的问题,但是除了其他出色的答案之外,我发现以下内容也非常有帮助:

如果要重命名的约束中有句点(点),则需要将其括在方括号中,如下所示:

sp_rename 'schema.[Name.With.Period.In.It]', 'New.Name.With.Period.In.It'

并且:不要在新名称中加上方括号。否则,您可能会以包含方括号的名称结尾
casenonsensitive
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.