From: | Alvaro Herrera <alvherre(at)dcc(dot)uchile(dot)cl> |
---|---|
To: | Mario Soto <mario_soto(at)venezolanadeavaluos(dot)com> |
Cc: | diego(at)adminsa(dot)com, pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Problema con trigger |
Date: | 2004-06-01 23:21:40 |
Message-ID: | 20040601232140.GA29114@dcc.uchile.cl |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
On Tue, Jun 01, 2004 at 07:03:00PM -0400, Mario Soto wrote:
> Hola, asi esta definida la tabla detmodelo pero no funciona
>
> CREATE TABLE "public"."detmodelo" (
> "co_modelo" INTEGER NOT NULL,
> "co_campo" INTEGER NOT NULL,
> "nu_activo_fijo" VARCHAR NOT NULL,
> "va_campo" VARCHAR(255),
> "sq_serialcolumn" SERIAL,
> "id_usuario" VARCHAR(15) NOT NULL,
> CONSTRAINT "detmodelo_pkey" PRIMARY KEY("co_modelo", "co_campo",
> "nu_activo_fijo"),
> CONSTRAINT "detmodelo_sq_serialcolumn_key" UNIQUE("sq_serialcolumn"),
> CONSTRAINT "detmodelo_fk_modelo" FOREIGN KEY ("co_modelo", "co_campo")
> REFERENCES "public"."modelo"("co_modelo", "co_campo")
> ON DELETE CASCADE
> ON UPDATE NO ACTION
> NOT DEFERRABLE
> ) WITH OIDS;
Hola,
Las referencias foraneas funcionan en una sola direccion, es decir, si
borras de la tabla modelo se deberia borrar de detmodelo pero no
viceversa.
Si estas seguro de lo que estas haciendo, necesitaras definir la
llave como "DEFERRABLE INITIALLY DEFERRED", y definir una segunda llave
foranea en la otra tabla que apunte en sentido inverso. No se si eso
realmente funciona, o siquiera si puede hacerse. Obviamente no se puede
en CREATE TABLE, tienes que usar ALTER TABLE para hacerlo.
--
Alvaro Herrera (<alvherre[a]dcc.uchile.cl>)
"Ciencias políticas es la ciencia de entender por qué
los políticos actúan como lo hacen" (netfunny.com)
From | Date | Subject | |
---|---|---|---|
Next Message | Mario Soto | 2004-06-01 23:28:28 | Re: Problema con trigger |
Previous Message | Jorge Tinitana | 2004-06-01 23:21:18 | Necesito ayuda con found |