Re: Constraint Check de varios campos en varias combinaciones

From: Hellmuth Vargas <hivs77(at)gmail(dot)com>
To: Jorge Lobo Arteaga <jorgeloboa(at)hotmail(dot)com>
Cc: "pgsql-es-ayuda(at)postgresql(dot)org" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Constraint Check de varios campos en varias combinaciones
Date: 2016-02-25 19:58:32
Message-ID: CAN3Qy4oXRDV4Qf=YBx_BUwFd4HFLjrg8VRnacV=6uMv=D9=AuQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

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 <jorgeloboa(at)hotmail(dot)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

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Cristobal Alexis Ibarra Gonzalez 2016-02-25 19:59:04 Re: Ayuda para pasar resultados de una tabla en csv
Previous Message Cristobal Alexis Ibarra Gonzalez 2016-02-25 19:58:06 Re: Ayuda para pasar resultados de una tabla en csv