sql >> Databasteknik >  >> RDS >> Sqlserver

Byt namn på en användardefinierad datatyp i SQL Server (T-SQL)

I SQL Server kan du använda sp_rename lagrad procedur för att byta namn på ett användarskapat objekt i den aktuella databasen, inklusive en användardefinierad datatyp.

Syntax

Syntaxen ser ut så här:

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

Där old_datatype är namnet på den användardefinierade datatyp som du vill byta namn på, och new_datatype är det nya namnet du vill ge det.

Exempel

Låt oss ta en titt på de aktuella användardefinierade datatyperna i vår databas.

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 en användardefinierad datatyp som heter clientid .

Låt oss byta namn på den till clientcode .

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

Att köra som byter namn på den till clientcode . Du kan se följande meddelande:

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

Detta ger oss i grunden insikten att om vi har några skript med lagrade procedurer som refererar till vårt omdöpta objekt, så kommer de att gå sönder och vi måste uppdatera dem.

Du kanske undrar om detta betyder att eventuella befintliga kolumner som använder denna datatyp nu kommer att brytas?

Lyckligtvis borde befintliga kolumner vara bra.

Efter att ha bytt namn på den användardefinierade datatypen kommer alla kolumner som använder den datatypen att fortsätta att använda den datatypen med dess nya namn. Eventuella begränsningar av datatypen (som längd, etc) fortsätter att tillämpas.

Låt oss nu kontrollera vår lista över användardefinierade 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 väntat har den fått ett nytt namn.


  1. MySQL Lägg till unik begränsning

  2. Är det en allvarlig prestandaträff för att använda främmande nycklar i SQL Server?

  3. Hur hanterar jag SQL-kolumnnamn som ser ut som SQL-nyckelord?

  4. Kan inte använda ett CONTAINS- eller FREETEXT-predikat i tabell eller indexerad vy eftersom det inte är fulltextindexerat