删除重复触发oracle

rryofs0p  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(385)

如果我用同一个cod\u regista插入多行,它会创建重复项,如何消除它们?每个值我只需要一个记录

CREATE OR REPLACE TRIGGER piazzetta_trg
BEFORE INSERT OR UPDATE
ON regia_piazzetta
FOR EACH ROW
BEGIN
IF INSERTING THEN
     FOR a IN(SELECT cod_regista, SUM(costo_produzione) as tot
              FROM regia_piazzetta
              GROUP BY cod_regista)
        LOOP     
            INSERT INTO piazzetta_tot VALUES (a.cod_regista, a.tot);
        END LOOP;
    UPDATE piazzetta_tot SET costo_totale = costo_totale + :new.costo_produzione WHERE piazzetta_tot.id_regista = :new.cod_regista;
END IF;
IF UPDATING THEN 
    UPDATE piazzetta_tot SET costo_totale = costo_totale+(:new.costo_produzione - :old.costo_produzione) WHERE piazzetta_tot.id_regista = :new.cod_regista;
  END IF;
END;
ig9co6j1

ig9co6j11#

不要使用触发器。创建
主键,或
唯一键(允许空值),或
唯一索引
让数据库处理重复项。
或者,在向表中插入行时处理问题 INSERT 声明。触发器应该是你最后的选择。

相关问题