Puede usar el sp_rename
procedimiento almacenado del sistema para cambiar el nombre de un CHECK
restricción en SQL Server.
El propósito de este procedimiento almacenado es permitirle cambiar el nombre de los objetos creados por el usuario en la base de datos actual. Por lo tanto, también puede usarlo para cambiar el nombre de otros objetos, como tablas, columnas, tipos de datos de alias, etc.
Sintaxis
La sintaxis de sp_rename
va así:
sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name' [ , [ @objtype = ] 'object_type' ]
Entonces su código podría ser algo como esto:
sp_rename 'schema_name.old_constraint_name', 'new_constraint_name';
Tenga en cuenta que la documentación de Microsoft establece que al cambiar el nombre de las restricciones, debe calificar el nombre existente con el nombre del esquema.
El siguiente ejemplo muestra cómo cambiar el nombre de un CHECK
restricción.
Ejemplo 1:elegir una restricción para cambiar el nombre
Primero, enumeremos el CHECK
restricciones en la base de datos, para que podamos decidir cuál cambiar el nombre.
SELECT name, SCHEMA_NAME(schema_id) AS 'Schema', OBJECT_NAME(parent_object_id) AS 'Table', definition FROM sys.check_constraints;
Resultado:
+-----------------+----------+----------------+----------------------------------------+ | name | Schema | Table | definition | |-----------------+----------+----------------+----------------------------------------| | chkPrice | dbo | ConstraintTest | ([Price]>(0)) | | chkValidEndDate | dbo | ConstraintTest | ([EndDate]>=[StartDate]) | | chkTeamSize | dbo | ConstraintTest | ([TeamSize]>=(5) AND [TeamSize]<=(20)) | | chkJobTitle | dbo | Occupation | ([JobTitle]<>'Digital Nomad') | +-----------------+----------+----------------+----------------------------------------+
Cambiemos el nombre de la segunda restricción ( chkValidEndDate ).
Eliminemos el Válido parte para que se convierta simplemente en chkEndDate .
Ejemplo 2:cambiar el nombre de la restricción
Ejecute esto para cambiar el nombre de la restricción.
sp_rename 'dbo.chkValidEndDate', 'chkEndDate';
Entonces, el nombre antiguo (existente) viene primero, seguido del nuevo nombre.
Así que ahora si selecciono todo CHECK
restricciones de nuevo, obtengo el siguiente resultado.
SELECT name, SCHEMA_NAME(schema_id) AS 'Schema', OBJECT_NAME(parent_object_id) AS 'Table', definition FROM sys.check_constraints;
Resultado:
+-------------+----------+----------------+----------------------------------------+ | name | Schema | Table | definition | |-------------+----------+----------------+----------------------------------------| | chkPrice | dbo | ConstraintTest | ([Price]>(0)) | | chkEndDate | dbo | ConstraintTest | ([EndDate]>=[StartDate]) | | chkTeamSize | dbo | ConstraintTest | ([TeamSize]>=(5) AND [TeamSize]<=(20)) | | chkJobTitle | dbo | Occupation | ([JobTitle]<>'Digital Nomad') | +-------------+----------+----------------+----------------------------------------+
Se ha cambiado el nombre de la restricción.
Como se mencionó, el sp_rename
El procedimiento almacenado no se limita solo a CHECK
restricciones Puede usar exactamente la misma sintaxis para cambiar el nombre de una restricción de clave externa, una tabla, una columna, un tipo de datos de alias o cualquier otro objeto definido por el usuario.
Sin embargo, Microsoft recomienda no cambiar el nombre de los procedimientos almacenados, los desencadenadores, las funciones definidas por el usuario o las vistas. En tales casos, Microsoft le recomienda que suelte el objeto y lo vuelva a crear con el nuevo nombre.