Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Renommer une contrainte CHECK dans SQL Server à l'aide de T-SQL

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.