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
-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

Responder a