Vous pouvez utiliser le sp_rename
procédure stockée système pour renommer un CHECK
contrainte dans SQL Server.
L'objectif de cette procédure stockée est de vous permettre de renommer des objets créés par l'utilisateur dans la base de données actuelle. Vous pouvez donc également l'utiliser pour renommer d'autres objets tels que des tables, des colonnes, des types de données d'alias, etc.
Syntaxe
La syntaxe de sp_rename
va comme ceci :
sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name' [ , [ @objtype = ] 'object_type' ]
Donc, votre code pourrait ressembler à ceci :
sp_rename 'schema_name.old_constraint_name', 'new_constraint_name';
Notez que la documentation Microsoft indique que lorsque vous renommez des contraintes, vous devez qualifier le nom existant avec le nom du schéma.
L'exemple suivant montre comment renommer un CHECK
contrainte.
Exemple 1 - Choisir une contrainte à renommer
Tout d'abord, listons le CHECK
contraintes dans la base de données, afin que nous puissions décider laquelle renommer.
SELECT name, SCHEMA_NAME(schema_id) AS 'Schema', OBJECT_NAME(parent_object_id) AS 'Table', definition FROM sys.check_constraints;
Résultat :
+-----------------+----------+----------------+----------------------------------------+ | 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') | +-----------------+----------+----------------+----------------------------------------+
Renommez la deuxième contrainte ( chkValidEndDate ).
Supprimons le Valide partie pour qu'il devienne juste chkEndDate .
Exemple 2 - Renommer la contrainte
Exécutez ceci pour renommer la contrainte.
sp_rename 'dbo.chkValidEndDate', 'chkEndDate';
Ainsi, l'ancien nom (existant) vient en premier, suivi du nouveau nom.
Alors maintenant, si je sélectionne tout CHECK
contraintes à nouveau, j'obtiens le résultat suivant.
SELECT name, SCHEMA_NAME(schema_id) AS 'Schema', OBJECT_NAME(parent_object_id) AS 'Table', definition FROM sys.check_constraints;
Résultat :
+-------------+----------+----------------+----------------------------------------+ | 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') | +-------------+----------+----------------+----------------------------------------+
Le nom de la contrainte a été modifié.
Comme mentionné, le sp_rename
la procédure stockée n'est pas limitée à CHECK
contraintes. Vous pouvez utiliser exactement la même syntaxe pour renommer une contrainte de clé étrangère, une table, une colonne, un type de données d'alias ou tout autre objet défini par l'utilisateur.
Toutefois, Microsoft déconseille de renommer les procédures stockées, les déclencheurs, les fonctions définies par l'utilisateur ou les vues. Dans de tels cas, Microsoft vous recommande plutôt de supprimer l'objet et de le recréer avec le nouveau nom.