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';
Où 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é.