Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Renomear um tipo de dados definido pelo usuário no SQL Server (T-SQL)


No SQL Server, você pode usar o sp_rename procedimento armazenado para renomear um objeto criado pelo usuário no banco de dados atual, incluindo um tipo de dados definido pelo usuário.

Sintaxe


A sintaxe fica assim:
EXEC sp_rename 'old_datatype', 'new_datatype', 'USERDATATYPE';

Onde old_datatype é o nome do tipo de dados definido pelo usuário que você deseja renomear e new_datatype é o novo nome que você deseja dar a ele.

Exemplo


Vamos dar uma olhada nos tipos de dados definidos pelo usuário atuais em nosso banco de dados.
SELECT 
  name,
  max_length,
  [precision],
  scale,
  is_user_defined
FROM sys.types
WHERE is_user_defined = 1;

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

Temos um tipo de dados definido pelo usuário chamado clientid .

Vamos renomeá-lo para clientcode .
EXEC sp_rename 'clientid', 'clientcode', 'USERDATATYPE';

A execução que o renomeia para clientcode . Você pode ver a seguinte mensagem:
Caution: Changing any part of an object name could break scripts and stored procedures.

Isso basicamente nos informa que, se tivermos scripts de procedimentos armazenados que fazem referência ao nosso objeto renomeado, eles serão interrompidos e precisaremos atualizá-los.

Você pode se perguntar se isso significa que todas as colunas existentes que usam esse tipo de dados agora serão quebradas?

Felizmente, as colunas existentes devem funcionar bem.

Depois de renomear o tipo de dados definido pelo usuário, todas as colunas que usam esse tipo de dados continuarão a usar esse tipo de dados com seu novo nome. Quaisquer restrições do tipo de dados (como comprimento, etc) continuam a ser aplicadas.

Agora vamos verificar nossa lista de tipos de dados definidos pelo usuário novamente:
SELECT 
  name,
  max_length,
  [precision],
  scale,
  is_user_defined
FROM sys.types
WHERE is_user_defined = 1;

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

Como esperado, ele foi renomeado conforme especificado.