从插入中选择

时间:2011-08-18 10:22:58

标签: postgresql

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

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

id是自动增量主键。

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

“SELECT id FROM mytable WHERE id IS NULL;

“id”必须是auto_increment列才能使其正常工作。 它将返回last_insert_id,就像last_insert_id()一样。

例如: MySQL的> INSERT INTO订单(customer_cust_id,orderdatetime,message,taxrate,shippingprice) - > SELECT'1',NOW(),null,taxrate,shippingprice FROM customer - > WHERE cust_id ='1';“

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