小编Nok*_*Nok的帖子

Postgresql使用触发器在插入值后更新列值

我想将值插入到 tableA 中,然后更新列 [amount_hkd]。我已经成功使用触发器,但性能非常慢,应用触发器后需要一个小时才能完成 8400 行的插入。我怎样才能提高性能?感谢您的帮助

要执行的语句:

INSERT INTO tableA (suppliers, invoice_dates, shipment_dates, amounts, currency, currency_conversion_rate)
SELECT l.supplier, l.invoice_date, l.shipment_date, l.amount, l.currency, o.currency_conversion_rate
FROM tableB l
LEFT JOIN tableC o
ON l.currency = o.currency_code
WHERE l.supplier = 'ABC'
Run Code Online (Sandbox Code Playgroud)

我创建的函数:

CREATE OR REPLACE FUNCTION cal() 
RETURNS TRIGGER AS $$ 
BEGIN 
UPDATE tableA 
SET amount_hkd = NEW.amounts * NEW.currency_conversion_rate;
RETURN NEW; 
END; 
$$ LANGUAGE plpgsql;
Run Code Online (Sandbox Code Playgroud)

我尝试的第一个触发器:

CREATE CONSTRAINT TRIGGER update_amount
AFTER INSERT ON tableA
DEFERRABLE
INITIALLY DEFERRED
FOR EACH ROW 
EXECUTE PROCEDURE …
Run Code Online (Sandbox Code Playgroud)

sql postgresql triggers sql-update sql-insert

0
推荐指数
1
解决办法
4894
查看次数

标签 统计

postgresql ×1

sql ×1

sql-insert ×1

sql-update ×1

triggers ×1