2014-01-15 2 views
0

Я выполнить следующий запрос:возвращение против CURRVAL PostgreSQL

INSERT INTO users (id, email, password, gender) 
VALUES (nextval('seq_user_id'), $2, $3, $4) 

затем:

INSERT INTO images (id, data, filesize, filename, user_id) 
VALUES (nextval($1), $2, $3, $4, currval('seq_user_id')); 

я могу сделать то же самое с RETURNING id AS user_id, а затем передать его в следующем запросе, что это лучший способ сделать это?

+2

Я думаю, что это вопрос вкуса. Оба решения в порядке. –

ответ

1

Я предпочитаю RETURNING, потому что тот же подход работает с многозначными результатами.

Вы можете использовать только currval, когда у вас есть только одна строка результатов.

Кроме того, я не убежден, что оценочный заказ от nextval и currval гарантируется, когда они появятся в том же VALUES. Таким образом, будет безопаснее получить значение в RETURNING и передать его в качестве параметра для следующего запроса.

+0

Я уверен, что currval() и nextval() в этом разделе относятся к разным индексам –

Смежные вопросы