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

时间:2017-01-21 00:18:48

标签: postgresql triggers cursor

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

我的想法是,AFTER INSERT功能应该允许我传递来自" NEW" row作为参数,以便引用表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并不认为插入/更新后意味着我的意思。

或许我只是做错了什么?有没有办法做我想做的事情?

1 个答案:

答案 0 :(得分:3)

不确定为什么会这样,但你可以按照

的方式做点什么
{{1}}