2012-01-03 15 views

Respuesta

53

puede cambiar el nombre utilizando sp_rename usando @objtype = 'OBJECT'

Esto funciona en objetos enumerados en la sys.objects que incluye restricciones

+9

En caso de que no se puede conseguir que esto funcione, dice en MSDN - * "Al cambiar el nombre de una restricción, se debe especificar el esquema al que pertenece la restricción." * –

+0

Para las restricciones PK no es necesario que se especifique '@objtype = 'OBJECT''. Solo especifique el nombre antiguo y el nuevo nombre. – pkuderov

36

Puede utilizar sp_rename.

sp_rename 'CK_Ax', 'CK_Ax1' 
+2

+1 Esto es lo que usa SSMS al cambiar el nombre de las restricciones. Para una restricción PK, pasa 'INDEX' como tipo de objeto. –

+2

También es importante tener en cuenta que las restricciones de CHECK, a diferencia de PK, no requieren un prefijo de tabla en el primer parámetro 'sp_rename', y fallarán si usa uno. – mattmc3

30

Después de un poco más de excavación, descubrí que en realidad tiene que ser en esta forma:

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

Source

+1

Esta es la respuesta más precisa. Las otras formas solo funcionan porque la mayoría de las personas vuelcan todas sus tablas en el esquema predeterminado (generalmente "dbo :) y puede omitir el esquema predeterminado. Pero si usa varios esquemas, esto es correcto (y siempre puede indicar el" dbo ")) – Godeke

7

respuesta es verdadera:

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

Sé que esto es una vieja pregunta, pero acabo de encontrar lo siguiente para ser muy útil, además de las otras excelentes respuestas:

Si la restricción a la nueva denominación tiene un período en el que (punto), entonces usted necesita para encerrar entre corchetes, así:

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