PostgreSQL AFTER INSERT触发器,并引用插入的行



我在PostgreSQL中有一个INSERT触发器,我试图连接另一个表上插入的行,然后将结果插入第三个表。让我们调用INSERT触发器触发的原始表"A";光标在"B"上与A连接的表;然后触发器函数将表插入到"C"中。

我的想法是,AFTER INSERT函数应该允许我将"NEW"行中的值作为参数传递,以便引用表a中相应的行,如下所示:

myCursor CURSOR (insertedKey A.key%TYPE) FOR
SELECT *
FROM A
INNER JOIN B
ON A.key=B.key
WHERE A.key=insertedKey;
...
OPEN myCursor (NEW.key);
FETCH NEXT FROM myCursor INTO row_C;
INSERT INTO C VALUES (row_C.*);

这给了我一个空的光标。如果我在AFTER UPDATE上触发触发器,它会起作用,但使用A中的旧行。这让我认为PostgreSQL并不认为AFTER INSERT/UPDATE是我认为的意思。

或者我只是做错了什么?有什么办法做我想做的事吗?

不确定为什么会发生这种情况,但你可以按照的思路做一些事情

INSERT INTO C
SELECT NEW.*, B.*
FROM B
WHERE B.key = NEW.key   

最新更新