Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

check de dos columnas de la misma tabla

Estas en el tema de check de dos columnas de la misma tabla en el foro de Oracle en Foros del Web. Hola a todos, estoy intentando hacer una constraint en una tabla 'tabla', la cual tiene (entre otras) las columnas 'campo1 number(3) null' y 'campo2 number(3) ...
  #1 (permalink)  
Antiguo 21/08/2008, 04:59
 
Fecha de Ingreso: marzo-2007
Mensajes: 34
Antigüedad: 17 años, 8 meses
Puntos: 1
check de dos columnas de la misma tabla

Hola a todos,
estoy intentando hacer una constraint en una tabla 'tabla', la cual tiene (entre otras) las columnas 'campo1 number(3) null' y 'campo2 number(3) null', de tal modo que estos dos campos no puedan tomar un valor DISTINTO de null simultáneamente.
Es decir, campo1 y campo2 podrán ser null al mismo tiempo, serlo uno y el otro no, pero nunca tener un valor distinto de null en la misma tupla.
Lo he intentado con la siguiente declaración:
ALTER TABLE tabla ADD CONSTRAINT CK_tabla CHECK (((campo1 = NULL) AND (campo2 = NULL)) OR ((campo1 = NULL) AND (campo2 != NULL)) OR ((campo1 != NULL) AND (campo2 = NULL )));
Pero no funciona, ya que me deja ingresar los campos 'campo1' y 'campo2' con valores distintos de null en el mismo registro. He leído que todas las comparaciones con NULL van a dar como resultado NULL, entonces no sé como comparar ni hacer la comprobación.
Alguien sabría comentarme alguna solución, o decirme si lo que estoy intentando es posible o no?
Muchas gracias a todos
  #2 (permalink)  
Antiguo 21/08/2008, 09:25
 
Fecha de Ingreso: junio-2008
Ubicación: D.F.
Mensajes: 62
Antigüedad: 16 años, 5 meses
Puntos: 1
Respuesta: check de dos columnas de la misma tabla

Que Tal,


Intanta realizar tu constraint de la siguiente manera.


CREATE TABLE PRUEBA_CHECK (
ID NUMBER(10),
CAMPO1 VARCHAR2(20),
CAMPO2 VARCHAR2(20),
CONSTRAINT PRUEBAC_PK PRIMARY KEY (ID),
CONSTRAINT PRUEBAC_CK CHECK (((campo1 IS NULL) AND (campo2 IS NULL)) OR ((campo1 IS NULL) AND (campo2 IS NOT NULL)) OR ((campo1 IS NOT NULL) AND (campo2 IS NULL)))
)
/


Espero te sea de Utilidad.
  #3 (permalink)  
Antiguo 22/08/2008, 01:26
 
Fecha de Ingreso: marzo-2007
Mensajes: 34
Antigüedad: 17 años, 8 meses
Puntos: 1
Respuesta: check de dos columnas de la misma tabla

Muchísimas gracias Oscar,
ya funcionó perfectamente... me fue muy útil.
Muchas gracias de nuevo.
Un saludo
  #4 (permalink)  
Antiguo 22/08/2008, 10:39
 
Fecha de Ingreso: junio-2008
Ubicación: D.F.
Mensajes: 62
Antigüedad: 16 años, 5 meses
Puntos: 1
Respuesta: check de dos columnas de la misma tabla

Que bueno que te haya servido, cualquier cosa no dudes en escribir.

Saludos-
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:04.