【发布时间】:2020-09-25 17:30:26
【问题描述】:
我已经创建了以下触发器;
CREATE TRIGGER material_trigger
BEFORE INSERT OR UPDATE ON materials
FOR EACH ROW
EXECUTE PROCEDURE my_proc ();
我很难理解 my_proc 何时会在 upsert 查询上运行,如下所示:
--UPSERT
INSERT INTO materials (id, col)
VALUES (1, 1)
ON CONFLICT (id) DO UPDATE SET
col='x'
如果我正在运行 upsert,我是否正确地认为:
- 如果是
INSERT,它将运行一次 - 如果是
UPDATE,它将运行两次
如果我运行这个AFTER upsert,那么逻辑上我会确保my_proc 只被触发一次?
【问题讨论】:
标签: postgresql triggers sql-update sql-insert