SQL - restriccion con check

   
Vista:

restriccion con check

Publicado por cristina (2 intervenciones) el 14/01/2011 13:09:16
Hola a todos.. a ver que opinais:

debo hacer un ejercico:
"impedir que se registren mas tiendas de provincia Toledo"

la solución más eficiente es:

ALTER TABLE TIENDAS ADD CONSTRAINT TIALT CHECK (provincia
!='Toledo' OR Fecha_alta < to_date ('11/01/2011','dd/mm/yyyy'));

No se puede poner solo provincia != Toledo, pork ya hay tiendas registradas con esa provincia...

Con esa solución pasa una cosa:

* Te impide introducir más tiendas de Toledo con fecha posterior al 11 del 1
pero no te impide con fecha anterior.

* Y tb te impide introducir mas tiendas indiferente de la provincia con fecha anterior al 11 de 1

El ejercicio NO ESTA PERFECTO,
debería de interferir solo en las tiendas de Toledo, e impedirte el registro independientemente de la fecha..

Se os ocurre algo??

GRACIAS
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:restriccion con check

Publicado por Ariel Bálsamo (9 intervenciones) el 14/01/2011 15:34:26
Hola Cristina. En primer lugar creo que la Constraint no te permite ingresar ninguna tienda con fecha posterior al 11/01/2011 porque estás utilizando OR an lugar de AND. Es decir que estás agregando dos restricciones diferentes:
1) Que ninguna provincia sea Toledo.
2) Que la fecha de alta sea anterior al 11/01/2011.
Debes vinvularla con AND para que se cumplan ambas.

De cualquier manera, esto no soluciona tu problema. Y creo que no puedes resolverlo con Constraints. Deberías utilizar un Trigger que se ejecute después de un Insert y que controle que la provincia a insertar no sea Toledo (sin importar la fecha). Además otro trigger para después de un Update para que no te modifiquen la provincia a Toledo tampoco. En este caso puedes verificar si la fecha de alta es anterior al 11/01/2011, verás si aceptas la modificación o no.
Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:restriccion con check

Publicado por cristina (2 intervenciones) el 14/01/2011 19:48:36
Muchas gracias por responder!!

La primera opcion fue de poner AND pero no me lo permite,
por eso puse OR..
pero no es un OR "normal" lo que hace es una especie de XOR,
es decir, entra en la primera restricción y después hace la segunda..
si no, entra en la primera, no entra en la segunda..

Nunca habia usado trigger me voy a documentar y voy a probarlo, que seguro que soluciona el problema..
GRACIAS!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar