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>, Lista Postgres ES <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Constraint Check de varios campos en varias combinaciones
Date: 2016-02-25 20:55:13
Message-ID: CAN3Qy4rEXCiPnt80e03u-DH9YT8iRw2Vhh3=v8283_fucNb7dw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

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<jorgeloboa(at)hotmail(dot)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 <hivs77(at)gmail(dot)com>
> *Enviado:* jueves, 25 de febrero de 2016 7:58 p. m.
> *Para:* Jorge Lobo Arteaga
> *Cc:* pgsql-es-ayuda(at)postgresql(dot)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 <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
>
>

--
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

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Omar Beltrán Cano 2016-02-25 22:42:43 Re: join super lento
Previous Message Anthony Sotolongo 2016-02-25 20:36:42 Re: Ayuda para pasar resultados de una tabla en csv