Hola Jorge Se puede incluir cualquier expresión que retorne un boolean y que solo dependan de los campos de la propia tabla o variables globales (now() por ejemplo).
El 25 de febrero de 2016, 15:45, Jorge Lobo Arteaga<jorgelo...@hotmail.com> escribió: > Mil gracias. Me funcionó perfecto. > > > Como nota adicional; no sabía que se podían incluir estructuras de > control. Se pueden incluir otro tipo de código dentro del CHECK. ? > > > > > > ------------------------------ > *De:* Hellmuth Vargas <hiv...@gmail.com> > *Enviado:* jueves, 25 de febrero de 2016 7:58 p. m. > *Para:* Jorge Lobo Arteaga > *Cc:* pgsql-es-ayuda@postgresql.org > *Asunto:* Re: [pgsql-es-ayuda] Constraint Check de varios campos en > varias combinaciones > > Hola Jorge > > Pruebe con esto: > > > create table predio( > tipo integer not null, > nom varchar(40), > apto char(6), > constraint ck_tipo_predio_de_1_a_5 check(tipo >= 1 and tipo<=5), > constraint ck_other check (case when tipo in (1,2) then nom is null > and apto is null > when tipo in (3) then nom is not null > when tipo in (4,5) then apto is not null and nom is not null end) > ); > > 2016-02-25 14:33 GMT-05:00 Jorge Lobo Arteaga <jorgelo...@hotmail.com>: > >> Buenas tardes, >> >> >> Tengo una tabla así >> >> >> create table predio( >> >> tipo integer not null, >> >> nom varchar(40), >> >> apto char(6), >> >> constraint ck_tipo_predio_de_1_a_5 check(tipo >= 1 and tipo<=5) >> >> ); >> >> >> 'nom' y 'apto' no son NOT NULL debido a que la obligatoriedad de dichos >> campos dependen del valor del campo 'tipo', >> >> teniendo en cuenta las siguientes condiciones. >> >> >> El campo 'tipo' almacena los tipos de predios así: 1-Casa, 2-Casa lote, >> 3-Apartamento, 4-Edificio, 5-Conjunto cerrado. >> >> El campo 'nom' almacena el nombre del predio, solo si el tipo de predio >> es 3, 4 o 5. Caso contrario será NULL. >> >> El campo 'apto' almacena el número de apartamento o vivienda, solo si el >> tipo de predio es 4 o 5. Caso contrario será NULL. >> >> Los campos 'nom' y 'apto' serán NULL, solo si tipo de predio es 1 o 2. >> >> >> No he podido hacer que las restricciones de tablas funcionen usando >> CHECK. He insistido bastante, pero creo que solo se va a poder >> >> usando TRIGGERS. >> >> >> Gracias por su apoyo. >> >> >> >> >> >> >> > > > -- > Cordialmente, > > Ing. Hellmuth I. Vargas S. > Esp. Telemática y Negocios por Internet > Oracle Database 10g Administrator Certified Associate > EnterpriseDB Certified PostgreSQL 9.3 Associate > > -- Cordialmente, Ing. Hellmuth I. Vargas S. Esp. Telemática y Negocios por Internet Oracle Database 10g Administrator Certified Associate EnterpriseDB Certified PostgreSQL 9.3 Associate