Выберите из вставки - PullRequest
       4

Выберите из вставки

2 голосов
/ 18 августа 2011

Можно ли выбрать из оператора вставки?Например:

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

Где id - автоинкрементный первичный ключ.

Ответы [ 2 ]

2 голосов
/ 18 августа 2011

Это невозможно, так как INSERT не возвращает виртуальную таблицу для SELECT. Однако вы можете получить фактическое значение идентификатора, используя currval(regclass) функцию последовательности как:

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

EDIT:

Использовать RETURNING предложение (доступно с PostgreSQL 8.2):

INSERT INTO yourTableName (col1, col2) VALUES ('aaa', 'bbb') RETURNING id;
 id 
----
  2
(1 row)
0 голосов
/ 18 августа 2011

"SELECT id from mytable WHERE id is NULL;

" id "должен быть столбцом auto_increment, чтобы он работал. Он будет возвращать last_insert_id так же, как ожидается от last_insert_id ().

пример: mysql> INSERT INTO orders (customer_cust_id, orderdatetime, message, taxrate, shippingprice) -> SELECT '1', NOW (), null, taxrate, shippingprice ОТ клиента -> WHERE cust_id = '1'; "

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...