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

Duda existencial en el uso de Triggers

From: juan <juanramirez(at)cajazacate(dot)com(dot)sv>
To: pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Duda existencial en el uso de Triggers
Date: 2010-05-18 17:13:21
Message-ID: 4BF2CAB1.1040202@cajazacate.com.sv (view raw or flat)
Thread:
Lists: pgsql-es-ayuda
Tengo una duda muy existencial con el uso de los trigger, soy novato en 
esto del mundo del dba y quiero armar un trigger AFTER INSERT y no hace 
lo que quiero que haga,

a grandes rasgos lo que quiero hacer es que cuando se INGRESE un 
registro a la tabla, sea cual sea el valor el trigger lo debe de cambiar 
a otro diferente.


tengo una tabla clientes así:

CREATE TABLE clientes
(
   numero integer NOT NULL,
   descripcion text,
   CONSTRAINT clientes_pkey PRIMARY KEY (numero)
);

------------------------------------------------------------

ahora tengo un triger así:

CREATE OR REPLACE FUNCTION tri_asigna_correlativo()
   RETURNS trigger AS
$BODY$
begin
new.numero=99999999;
return new;
end;
$BODY$  LANGUAGE 'plpgsql' VOLATILE;


------------------------------------------------------------

y la definición respectiva en la tabla clientes:

CREATE TRIGGER asigna_correlativo
   AFTER INSERT
   ON clientes
   FOR EACH ROW
   EXECUTE PROCEDURE tri_asigna_correlativo();

------------------------------------------------------------


en el pgAdmin ingreso un registro con los valores 888, juan ramirez y no 
asigna el valor 99999999, sino, que deja el número 888 que ingreso desde 
pgAdmin.


No quiero asignar el siguiente valor 99999999 como un valor DEFAULT en 
el campo, así que por favor no lo recomienden, obviamente es un ejemplo.

Tampoco recomienden cambiar el trigger a BEFORE INSERT porque no lo 
necesito así.


Pregunta?
¿porque el insert en la tabla no respeta el trigger?, he echo la 
siguiente prueba

CREATE OR REPLACE FUNCTION tri_asigna_correlativo()
   RETURNS trigger AS
$BODY$
begin
new.numero=99999999;
raise exception 'valor cambiado %', new.numero;
return new;
end;
$BODY$  LANGUAGE 'plpgsql' VOLATILE;

Y para mi sorpresa el exception dice lo siguiente:
''valor cambiado 99999999''



-- 
Cordialmente,
Juan Ramírez
El Salvador

Responses

pgsql-es-ayuda by date

Next:From: Alvaro HerreraDate: 2010-05-18 17:21:02
Subject: Re: Duda existencial en el uso de Triggers
Previous:From: Diego AyalaDate: 2010-05-18 16:52:27
Subject: Re: actualizar a la nueva version

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