我在PostgreSQL中有一个INSERT触发器,我试图让它连接另一个表上插入的行,然后将结果插入到第三个表中。让我们调用INSERT触发器触发的原始表"A";游标在“B”上连接A的表;然后触发器函数插入到"C“的表。
我的想法是,插入之后的函数应该允许我将"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在插入/更新之后并不认为它意味着什么。
或者我只是做错了什么?有没有办法做我想做的事?
发布于 2017-01-21 14:38:02
我不确定为什么会发生这种情况,但你可以这样做
INSERT INTO C
SELECT NEW.*, B.*
FROM B
WHERE B.key = NEW.key https://stackoverflow.com/questions/41774415
复制相似问题