如果我用同一个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;
1条答案
按热度按时间ig9co6j11#
不要使用触发器。创建
主键,或
唯一键(允许空值),或
唯一索引
让数据库处理重复项。
或者,在向表中插入行时处理问题
INSERT
声明。触发器应该是你最后的选择。