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
Views: Raw Message | Whole Thread | Download mbox | Resend email
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

Browse pgsql-es-ayuda by date

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