Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

Como hacer que pase de largo un trigger

Estas en el tema de Como hacer que pase de largo un trigger en el foro de PostgreSQL en Foros del Web. Tengu una tabla de relacion en la cual tambien manejo la cantida de items relacionados, hice un trigger para que cuando hago un insert y ...
  #1 (permalink)  
Antiguo 03/10/2006, 12:16
 
Fecha de Ingreso: agosto-2003
Mensajes: 203
Antigüedad: 21 años, 3 meses
Puntos: 0
Como hacer que pase de largo un trigger

Tengu una tabla de relacion en la cual tambien manejo la cantida de items relacionados, hice un trigger para que cuando hago un insert y la relacion ya existe haga un incremento en la cantidad, pero necesito que si aun no existe realice el insert, lo cual no logro hacerlo, les dejo el codigo del trigger, espero me puedan ayudar

Código:
CREATE TRIGGER "before_insert_lista_casamiento_productos" BEFORE INSERT 
ON "public"."lista_casamiento_productos" FOR EACH ROW 
EXECUTE PROCEDURE "public"."before_insert_lcp"();
Código:
CREATE OR REPLACE FUNCTION "public"."before_insert_lcp" () RETURNS TRIGGER AS
$body$
DECLARE
       rListaProducto RECORD;
BEGIN
     SELECT * INTO rListaProducto
     FROM lista_casamiento_productos
     WHERE fk_id_lista_casamiento = new.fk_id_lista_casamiento
           AND fk_id_producto = new.fk_id_producto;
     IF rListaProducto IS NOT NULL THEN
         UPDATE lista_casamiento_productos SET cantidad = cantidad + 1
         WHERE fk_id_lista_casamiento = rListaProducto.fk_id_lista_casamiento
         AND fk_id_producto = rListaProducto.fk_id_producto;
         RETURN NULL;
     else
          RETURN NEW;
         /*INSERT INTO lista_casamiento_productos (fk_id_lista_casamiento,fk_id_producto)
         VALUES (new.fk_id_lista_casamiento, new.fk_id_producto);*/
     END IF;
     
END;
$body$
LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:16.