Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Zmień nazwę typu danych zdefiniowanego przez użytkownika w programie SQL Server (T-SQL)

W SQL Server możesz użyć sp_rename procedura składowana do zmiany nazwy obiektu utworzonego przez użytkownika w bieżącej bazie danych, w tym typu danych zdefiniowanego przez użytkownika.

Składnia

Składnia wygląda tak:

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

Gdzie old_datatype to nazwa typu danych zdefiniowanego przez użytkownika, którego nazwę chcesz zmienić, oraz new_datatype to nowa nazwa, którą chcesz mu nadać.

Przykład

Rzućmy okiem na obecne typy danych zdefiniowane przez użytkownika w naszej bazie danych.

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

Wynik:

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

Mamy jeden zdefiniowany przez użytkownika typ danych o nazwie clientid .

Zmieńmy jego nazwę na clientcode .

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

Uruchomienie, które zmienia nazwę na clientcode . Możesz zobaczyć następujący komunikat:

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

To w zasadzie daje nam do zrozumienia, że ​​jeśli mamy jakieś skrypty procedur składowanych, które odwołują się do naszego obiektu o zmienionej nazwie, to się zepsują i będziemy musieli je zaktualizować.

Możesz się zastanawiać, czy oznacza to, że jakiekolwiek istniejące kolumny korzystające z tego typu danych zostaną teraz uszkodzone?

Na szczęście istniejące kolumny powinny być w porządku.

Po zmianie nazwy typu danych zdefiniowanego przez użytkownika wszystkie kolumny korzystające z tego typu danych będą nadal używać tego typu danych z nową nazwą. Wszelkie ograniczenia typu danych (takie jak długość itp.) są nadal egzekwowane.

Sprawdźmy teraz ponownie naszą listę typów danych zdefiniowanych przez użytkownika:

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

Wynik:

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

Zgodnie z oczekiwaniami nazwa została zmieniona zgodnie z opisem.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak działa funkcja DIFFERENCE() SQL Server

  2. Przenieś dane z jednej bazy danych do innej bazy danych

  3. Jak przekonwertować liczbę całkowitą na liczbę dziesiętną w SQL Server

  4. Czy mogę używać wielu kursorów na jednym połączeniu z pyodbc i MS SQL Server?

  5. Dynamiczny SQL do generowania nazw kolumn?