From: | Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org> |
---|---|
To: | Juanky Moral <juanky(dot)moral(at)gmail(dot)com> |
Cc: | Roberto Andrade Fonseca <randrade(at)inteligentes(dot)com(dot)mx>, pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Restriccion CHECK |
Date: | 2005-09-06 18:05:19 |
Message-ID: | 20050906180519.GF26068@surnet.cl |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
On Tue, Sep 06, 2005 at 07:15:42PM +0200, Juanky Moral wrote:
> El 6/09/05, Alvaro Herrera<alvherre(at)alvh(dot)no-ip(dot)org> escribió:
> > On Tue, Sep 06, 2005 at 06:25:55PM +0200, Juanky Moral wrote:
> >
> > > Y digo yo: ¿no funcionaría igual con AND y, tratandose de
> > > comparaciones booleanas, más claro?:
> > >
> > > (rut IS NULL AND dv IS NULL)
> >
> > No, porque eso impide que definas cualquiera de los dos campos :-)
> No entiendo lo que quieres decir. Explícate mejor.
> Mira lo que yo trataba de decir:
>
> gnosis=# create table prueba (A boolean, B boolean);
> CREATE TABLE
> gnosis=# insert into prueba values (true,false);
> INSERT 883872 1
> gnosis=# alter table prueba add constraint prueba_chk check (a not is
> null and b not is null);
> gnosis=# alter table prueba add constraint prueba_chk check (a is not
> null and b is not null);
> ALTER TABLE
> gnosis=# update prueba set a = null;
> ERROR: new row for relation "prueba" violates check constraint "prueba_chk"
alvherre=# update prueba set a = null, b = null;
ERROR: el nuevo registro para la relación «prueba» viola la restricción check «prueba_chk»
Este ultimo caso debe permitirse, y eso es lo que hace mi version:
alvherre=# create table prueba2 (a boolean, b boolean);
CREATE TABLE
alvherre=# insert into prueba2 values (true, false);
INSERT 0 1
alvherre=# alter table prueba2 add constraint prueba2_chk check (a is not null = b is not null);
ALTER TABLE
alvherre=# update prueba2 set a = null;
ERROR: el nuevo registro para la relación «prueba2» viola la restricción check «prueba2_chk»
alvherre=# update prueba2 set a = null, b = null;
UPDATE 1
--
Alvaro Herrera -- Valdivia, Chile Architect, www.EnterpriseDB.com
"Lo esencial es invisible para los ojos" (A. de Saint Exúpery)
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2005-09-06 18:07:43 | Re: Resultado de un query contra resultado de una function |
Previous Message | Juanky Moral | 2005-09-06 18:02:26 | Re: Restriccion CHECK |