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

Renommer un type de données défini par l'utilisateur dans SQL Server (T-SQL)

Dans SQL Server, vous pouvez utiliser le sp_rename procédure stockée pour renommer un objet créé par l'utilisateur dans la base de données actuelle, y compris un type de données défini par l'utilisateur.

Syntaxe

La syntaxe ressemble à ceci :

EXEC sp_rename 'old_datatype', 'new_datatype', 'USERDATATYPE';

old_datatype est le nom du type de données défini par l'utilisateur que vous souhaitez renommer, et new_datatype est le nouveau nom que vous voulez lui donner.

Exemple

Examinons les types de données actuels définis par l'utilisateur dans notre base de données.

SELECT 
  name,
  max_length,
  [precision],
  scale,
  is_user_defined
FROM sys.types
WHERE is_user_defined = 1;

Résultat :

 +----------+--------------+-------------+---------+-------------------+
 | name     | max_length   | precision   | scale   | is_user_defined   |
 |----------+--------------+-------------+---------+-------------------|
 | clientid | 8            | 0           | 0       | 1                 |
 +----------+--------------+-------------+---------+-------------------+ 

Nous avons un type de données défini par l'utilisateur appelé clientid .

Renommez-le en clientcode .

EXEC sp_rename 'clientid', 'clientcode', 'USERDATATYPE';

Exécution qui le renomme en clientcode . Vous pouvez voir le message suivant :

Caution: Changing any part of an object name could break scripts and stored procedures.

Cela nous indique essentiellement que si nous avons des scripts de procédures stockées qui font référence à notre objet renommé, ils se briseront et nous devrons les mettre à jour.

Vous vous demandez peut-être si cela signifie que toutes les colonnes existantes qui utilisent ce type de données seront désormais rompues ?

Heureusement, les colonnes existantes devraient convenir.

Après avoir renommé le type de données défini par l'utilisateur, toutes les colonnes qui utilisent ce type de données continueront à utiliser ce type de données avec son nouveau nom. Toutes les restrictions du type de données (telles que la longueur, etc.) continuent d'être appliquées.

Maintenant, vérifions à nouveau notre liste de types de données définis par l'utilisateur :

SELECT 
  name,
  max_length,
  [precision],
  scale,
  is_user_defined
FROM sys.types
WHERE is_user_defined = 1;

Résultat :

+------------+--------------+-------------+---------+-------------------+
 | name       | max_length   | precision   | scale   | is_user_defined   |
 |------------+--------------+-------------+---------+-------------------|
 | clientcode | 8            | 0           | 0       | 1                 |
 +------------+--------------+-------------+---------+-------------------+ 

Comme prévu, il a été renommé comme spécifié.