我想使用PostgreSQL-RETURNING语句中的数据'theID'
INSERT INTO ... RETURNING theID;
在另一个声明中。如何做到这一点(没有游标)?
我的完整陈述(复制一些数据并从源表中删除它们; tab1& tab2定义相同):
DELETE FROM tab1 WHERE tab1id IN
(
INSERT INTO tab2
SELECT * FROM tab1 WHERE ?something?
RETURNING tab2id
);
错误消息:
ERROR: Syntaxerror near »INTO«
LINE 7: DELETE FROM tab1 WHERE tab1id IN (INSERT INTO tab2 SELECT * FROM ...
^
谢谢,Tebas。
答案 0 :(得分:2)
不,你不能,它还没有得到支持。使用存储过程或应用程序来解决问题。
答案 1 :(得分:2)
不幸的是,您无法在此位置使用DML语句。您需要将数据存储在其他位置。 (正在开展工作以获得将这样的DML用于PostgreSQL 9.1的能力,但现在还没有。)
现在,您可以将INSERT .. RETURNING的输出存储到临时表中,然后在DELETE中使用它 - 只需记住将其包装在显式事务中......