I SQL Server kan du bruge sp_rename
gemt procedure til at omdøbe et brugeroprettet objekt i den aktuelle database, inklusive en brugerdefineret datatype.
Syntaks
Syntaksen ser sådan ud:
EXEC sp_rename 'old_datatype', 'new_datatype', 'USERDATATYPE';
Hvor old_datatype
er navnet på den brugerdefinerede datatype, du gerne vil omdøbe, og new_datatype
er det nye navn, du vil give det.
Eksempel
Lad os tage et kig på de aktuelle brugerdefinerede datatyper i vores database.
SELECT
name,
max_length,
[precision],
scale,
is_user_defined
FROM sys.types
WHERE is_user_defined = 1;
Resultat:
+----------+--------------+-------------+---------+-------------------+ | name | max_length | precision | scale | is_user_defined | |----------+--------------+-------------+---------+-------------------| | clientid | 8 | 0 | 0 | 1 | +----------+--------------+-------------+---------+-------------------+
Vi har én brugerdefineret datatype kaldet clientid
.
Lad os omdøbe den til clientcode
.
EXEC sp_rename 'clientid', 'clientcode', 'USERDATATYPE';
Kørsel, der omdøber det til clientcode
. Du kan muligvis se følgende meddelelse:
Caution: Changing any part of an object name could break scripts and stored procedures.
Dette giver os dybest set besked på, at hvis vi har nogen scripts med lagrede procedurer, der refererer til vores omdøbte objekt, så vil de gå i stykker, og vi bliver nødt til at opdatere dem.
Du spekulerer måske på, om det betyder, at eksisterende kolonner, der bruger denne datatype, nu vil blive ødelagt?
Heldigvis skulle eksisterende kolonner være i orden.
Efter at have omdøbt den brugerdefinerede datatype, vil alle kolonner, der bruger denne datatype, fortsætte med at bruge den datatype med dets nye navn. Eventuelle begrænsninger af datatypen (såsom længde osv.) håndhæves fortsat.
Lad os nu tjekke vores liste over brugerdefinerede datatyper igen:
SELECT
name,
max_length,
[precision],
scale,
is_user_defined
FROM sys.types
WHERE is_user_defined = 1;
Resultat:
+------------+--------------+-------------+---------+-------------------+ | name | max_length | precision | scale | is_user_defined | |------------+--------------+-------------+---------+-------------------| | clientcode | 8 | 0 | 0 | 1 | +------------+--------------+-------------+---------+-------------------+
Som forventet er den blevet omdøbt som angivet.