martes, 23 de junio de 2015

Unique, Check y Default en SQL

Buenas noches queridos lectores el día del hoy les hablare de algunas restricciones interesantes con las clausulas Unique, Defaul y Check, bien, empecemos



Unique: Permite determinar que los valores registrados en una misma columna no sean idénticos, es decir, se mantengan únicos, como ya vimos anteriormente el campo clave también tiene la misma restricción, pero tiene una diferencia entre ellos en la cual el campo clave solo se puede definir en campos específicos mientras que a todas las columnas restantes se puede definir con UNIQUE. Hay que considerar que es solo un decir puesto que todas las columnas de la tabla no son campos clave.

Hay que tener en cuenta que una columna definida como UNIQUE acepta a lo más un valor NULL mientras que un valor con primary key no permite valores nulos

 alter table paises
 add constraint un_pais unique (nombre)

Se tiene tiene que colocar un nombre a la restricción UNIQUE, que este caso es nombre es un_pais, de esta manera podemos ingresar el nombre México, una sola vez, al insertarlo nuevamente el mismo nombre de Mexico, aun siendo otro idPais marcará error como en el siguiente ejemplo:

 insert into paises (idPais, nombre) values ('MXN', 'Mexico')
 insert into paises (idPais, nombre) values ('MX', 'Mexico')

La primer instrucción se agregará sin problemas, pero la segunda marcará un error de restricción porque el nombre del país Mexico ya existe, el error se muestra a continuación



Check: Permite restringir el rango de valores que pueden estar permitidos ingresar en una o más columnas de la tabla.

Vamos a pensar en la tabla PAGOS, pongo el script a continuación


 create table PAGOS (
 NumPago int primary key identity (1,1),
 IdReserva int,
 IdPasajero CHAR(5),
 Fecha date,
 Monto money)

--1. 
 ALTER TABLE PAGOS
ADD CONSTRAINT CHK_FECHA CHECK (FECHA<=GETDATE())
GO

--2. 
INSERT INTO PAGOS (IDRESERVA, IDPASAJERO, FECHA, MONTO) 
VALUES (1,'P0002','25/06/2015', 500)
GO

En el punto 1 crearemos la restricción cuya fecha de pago debe ser hoy o antes, sería imposible que nos esten pagando el día de mañana, hoy es 22 de junio de 2015, el 25 será jueves y por esa razón marcará un error al insertar haciendo referencia a la restriccion

Default: Ya hemos visto dos restricciones por ejemplo NULL es asignado a valores de columnas restringidas con NULL, y el autoincremento de valores numéricos a columnas asignadas como IDENTITY.

Default permite personalizar dichas restricciones a cualquier columna de una tabla que no tenga como restricción NOT NULL

En e punto 1 se agrega la restricción DFL_FECHA a la tabla PAGO, el cual, el valor por defecto sera la fecha de hoy.

En el punto dos, se muestran dos tipos de inserción sobre dicha columna en la primera se insertó una fecha para la cual el valor por defecto no aplica, mientras que en la segunda no se especifica una fecha, más bien, se invoca al valor por defecto con la clausula DEFAULT, es decir, se insertará la fecha actual en el registro.

En el caso que se quiera eliminar una restricción se debe alterar la tabla aplicando un DROP CONSTRAINT.

Veamos un script donde elimine la restricción por defecto de fecha

ALTER TABLE PAGOS
DROP CONSTRAINT DFL_FECHA
GO.

Muy bien queridos lectores, hasta aquí el post de hoy, ya saben como crear tables de una manera no tan básica. Espero les haya gustado, compartan o comenten.

Saludos



Banderas de Visitantes

Flag Counter