是否可以从插入语句中进行选择?例如:
SELECT id FROM (INSERT INTO table (col1, col2) VALUES (val1, val2));
id
是自动增量主键。
答案 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';“