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

Rinominare un tipo di dati definito dall'utente in SQL Server (T-SQL)

In SQL Server puoi usare sp_rename stored procedure per rinominare un oggetto creato dall'utente nel database corrente, incluso un tipo di dati definito dall'utente.

Sintassi

La sintassi è questa:

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

Dove old_datatype è il nome del tipo di dati definito dall'utente che desideri rinominare e new_datatype è il nuovo nome che vuoi dargli.

Esempio

Diamo un'occhiata agli attuali tipi di dati definiti dall'utente nel nostro database.

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

Risultato:

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

Abbiamo un tipo di dati definito dall'utente chiamato clientid .

Rinominiamolo in clientcode .

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

L'esecuzione lo rinomina in clientcode . Potresti visualizzare il seguente messaggio:

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

Questo sostanzialmente ci dà l'avviso che se abbiamo degli script di stored procedure che fanno riferimento al nostro oggetto rinominato, si romperanno e dovremo aggiornarli.

Potresti chiederti se questo significa che tutte le colonne esistenti che utilizzano questo tipo di dati verranno ora interrotte?

Fortunatamente, le colonne esistenti dovrebbero andare bene.

Dopo aver rinominato il tipo di dati definito dall'utente, tutte le colonne che utilizzano quel tipo di dati continueranno a utilizzare quel tipo di dati con il nuovo nome. Eventuali limitazioni del tipo di dati (come lunghezza, ecc.) continuano ad essere applicate.

Ora controlliamo di nuovo il nostro elenco di tipi di dati definiti dall'utente:

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

Risultato:

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

Come previsto, è stato rinominato come specificato.