2011-08-18 105 views
2

是否可以从插入语句中选择?例如:从插入中选择

SELECT id FROM (INSERT INTO table (col1, col2) VALUES (val1, val2)); 

其中id是一个自动增量主键。

回答

2

这不是在这样的方式可能的,因为INSERT不适用于SELECT返回虚拟表。但是你可以使用currval(regclass)序列功能得到ID的实际值:

SELECT currval('yourTableName_id_seq'::regclass); 
currval 
--------- 
     1 
(1 row) 

编辑:

使用RETURNING clause(可用自PostgreSQL的8.2):

INSERT INTO yourTableName (col1, col2) VALUES ('aaa', 'bbb') RETURNING id; 
id 
---- 
    2 
(1 row) 
+0

那'RETURNING'子句正是我想要的,谢谢! – Pikaling

0

“SELECT ID FROM MYTABLE其中ID为NULL;

“ID” 必须是一个AUTO_INCREMENT列,使其工作 它将返回LAST_INSERT_ID就像LAST_INSERT_ID()是意料中的事

例如: 的MySQL> INSERT INTO订单(customer_cust_id,orderdatetime,消息,TAXRATE,shippingprice) - >选择 '1',NOW(),NULL,TAXRATE,shippingprice FROM顾客 - > WHERE的cust_id = '1'; “

http://dev.mysql.com/doc/refman/5.0/en/insert-select.html

+0

我在寻找一种方式在它创建的时候抓住ID,因为插入和选择之间可能会发生另一个插入,所以最近的入口不是我想要的那个......并且刚刚说过,我现在是g oing看交易 – Pikaling