sql >> Database teknologi >  >> RDS >> Sqlserver

Omdøb en brugerdefineret datatype i SQL Server (T-SQL)

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.


  1. Hent Oracle sidst indsatte IDENTITY

  2. Sådan opretter du PDF-rapport ved hjælp af PL/SQL

  3. Hvordan Group_Concat() virker i SQLite

  4. MySQL Indsæt fra en database i en anden