
Tipos de datos definidos por el usuario en SQL Server
SQL Server permite crear tipos de datos que el usuario puede definir en base a los tipos de datos nativos o propios de SQL Server.
La creación de tipos de datos definidos por el usuario va a permitir el uso de los datos nativos de SQL Server de manera mas fácil, por ejemplo, para datos de tipo caracter que tengan una longitud variable entre 2 a 80 caracteres, se pueden definir un tipo de datos con una longitud de 100 para que alcance cualquier texto que pase los 80 caracteres y ponerle un nombre de fácil recuerdo como Texto100.
Crear tipos de datos definidos por el usuario
Instrucción Create Type
Create type NombreTipoDato from TipoDatoSQLServer
Los tipos de datos creados podrán ser utilizados en la base de datos que se crean.
Eliminar tipos de datos definidos por el usuario
Este no debe estar en uso por ninguna tabla
Instrucción Drop Type
Drop type NombreTipoDato
Ejemplos
1. — Crear los tipos de datos para nchar de 10 de ancho, nvarchar de 100 de ancho y otro para precio.
Create type Codigo10 from nchar(10) not null
Create type TextoObligatorio100 from nvarchar(100) not null
Create type Texto100 from nvarchar(100)
Create type Precio from numeric(9,2)
go
2. — Listar los tipos de datos definidos por el usuario
select * from sys.types where is_user_defined = 1
go
3. — Ver si existe el tipo de dato FechaObligatoria
select * from sys.types where name = ‘FechaObligatoria’
go
4. — Crear un script para el tipo de dato FechaObligatoria sin que reporte error si existe
if not exists (select * from sys.types where name = ‘FechaObligatoria’)
Begin
Create type FechaObligatoria from Date not null
End
go
Uso de los tipos de datos definidos por el usuario.
Al crear una tabla, basta con especificar después del nombre de campo el nombre del tipo definido por el usuario.
5. — Crear tabla Agencias
Create table Agencias (
AgenciasCodigo Codigo10,
AgenciasDescripcion TextoObligatorio100,
AgenciasReponsable nvarchar(150),
AgenciasDireccion Texto100 constraint AgenciasDireccionDF Default » )
go
6. — Eliminar el tipo de datos Codigo10
Drop type Codigo10
go
/* Mens. 3732, Nivel 16, Estado 1, Línea 1
No se puede quitar el tipo ‘Codigo10’ porque el objeto ‘Agencias’ hace referencia a él. Puede que haya otros objetos que hagan referencia a este tipo. */
Para poder eliminar es necesario que la tabla Agencias no use el tipo Codigo10, es decir, cambiar el tipo de dato de la tabla.
Alter table Agencias alter column AgenciasCodigo nchar(10)
go
Drop type Codigo10
go
7. — Tabla de Buses
Create table Buses
(BusesCodigo nchar(5),
BusesDescripcion TextoObligatorio100,
BusesPlaca nvarchar(20),
BusesCostoViaje Precio
constraint BusesPK Primary key (BusesCodigo) )
go
