Tipos de datos definidos por el usuario

Tipos de datos definidos por el usuario

SQL Server permite crear tipos de datos que el usuario puede definir en base a los tipos de datos 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

<


/h3>

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