Re: Problema con trigger

From: Diego Gil <diego(at)adminsa(dot)com>
To: Mario Soto <mario_soto(at)venezolanadeavaluos(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Problema con trigger
Date: 2004-06-01 22:21:02
Message-ID: 1086128462.3834.19.camel@roadwarrior.adminsa.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Y como esta definida la tabla "modelo", cual es la primary key ?

Diego.

On mar, 2004-06-01 at 20:03, 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,
> >
> > Deberías utilizar una "foreign key",
> >
> > ALTER TABLE detmodel ADD CONSTRAINT detmodelo_fk1 FOREIGN KEY(co_modelo,
> > co_campo) REFERENCES modelo(co_modelo, co_campo) ON DELETE CASCADE;
> >
> > Esto no solo hace que al eliminar un registro de modelo se eliminen los
> > registros vinculados de detmodelo sino que también garantiza la
> > integridad referencial, es decir que no se inserte ningun registro en
> > detmodelo que no tenga el correspondiente registro en modelo.
> >
> > Espero que te sea útil.
> >
> > Saludos,
> >
> > Diego.
> >
> > On mar, 2004-06-01 at 13:53, Mario Soto wrote:
> >
> >> Hola lista, tengo un problema:
> >>
> >> tengo 2 tablas modelo y detmodelo:
> >>
> >> ambas tienen los campos co_modelo y co_campo;
> >>
> >> cuando borro un registro en la tabla modelo, tambien quiero que se
> >> borren los registros en la tabla detmodelo, para lom cual he crado un
> >> triger para la table modelo:
> >>
> >> CREATE TRIGGER "delete_desmodelo" BEFORE DELETE
> >> ON "public"."modelo" FOR EACH ROW
> >> EXECUTE PROCEDURE "public"."sp_delete_desmodelo"();
> >>
> >>
> >>
> >> y el procedure es:
> >>
> >>
> >>
> >> CREATE OR REPLACE FUNCTION "public"."sp_delete_desmodelo" () RETURNS
> >> trigger AS'
> >> begin
> >> /* New function body */
> >> delete from detmodelo
> >> where co_modelo = old.co_modelo and co_campo = old.co_campo;
> >>
> >> return null;
> >> end;
> >> 'LANGUAGE 'plpgsql' IMMUTABLE CALLED ON NULL INPUT SECURITY INVOKER;
> >>
> >>
> >> El problema es que no me elimina nada:
> >>
> >> Alguna idea.
> >>
> >> Gracias
> >>
> >>
> >>
> >>
> >> ---------------------------(end of
> >> broadcast)--------------------------- TIP 5: ¿Has leído nuestro
> >> extenso FAQ?
> >>
> >> http://www.postgresql.org/docs/faqs/FAQ.html
> >
> > Diego A. Gil
> > Director
> > Admin S.A.
>
>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 2: puedes desuscribirte de todas las listas simultáneamente
> (envíe "unregister SuDirecciónDeCorreo" a majordomo(at)postgresql(dot)org)

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2004-06-01 22:32:22 Re: Cambiar formato de entrada de las fechas
Previous Message Edwin Quijada 2004-06-01 21:55:36 Re: administrador de postgres