sql >> Base de Datos >  >> RDS >> Sqlserver

Cambiar el nombre de un tipo de datos definido por el usuario en SQL Server (T-SQL)

En SQL Server, puede usar sp_rename procedimiento almacenado para cambiar el nombre de un objeto creado por el usuario en la base de datos actual, incluido un tipo de datos definido por el usuario.

Sintaxis

La sintaxis es así:

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

Donde old_datatype es el nombre del tipo de datos definido por el usuario al que le gustaría cambiar el nombre, y new_datatype es el nuevo nombre que le quieres dar.

Ejemplo

Echemos un vistazo a los tipos de datos definidos por el usuario actuales en nuestra base de datos.

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                 |
 +----------+--------------+-------------+---------+-------------------+ 

Tenemos un tipo de datos definido por el usuario llamado clientid .

Vamos a cambiarle el nombre a clientcode .

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

Ejecutar eso lo renombra a clientcode . Es posible que vea el siguiente mensaje:

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

Básicamente, esto nos advierte que si tenemos secuencias de comandos de procedimientos almacenados que hacen referencia a nuestro objeto renombrado, se romperán y tendremos que actualizarlos.

Quizás se pregunte si esto significa que las columnas existentes que usan este tipo de datos ahora se romperán.

Afortunadamente, las columnas existentes deberían estar bien.

Después de cambiar el nombre del tipo de datos definido por el usuario, cualquier columna que use ese tipo de datos continuará usando ese tipo de datos con su nuevo nombre. Cualquier restricción del tipo de datos (como la longitud, etc.) se sigue aplicando.

Ahora revisemos nuestra lista de tipos de datos definidos por el usuario nuevamente:

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 era de esperar, ha sido renombrado como se especifica.