Skip site navigation (1) Skip section navigation (2)

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 (view raw or flat)
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

pgsql-es-ayuda by date

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

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group