2014-01-15 54 views
0

我執行以下查詢:返回VS 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

此外,我不相信nextvalcurrval之間的評估訂單在出現在同一VALUES條款中時可以得到保證。因此,獲取RETURNING中的值並將其作爲參數提供給下一個查詢會更安全。

+0

我很確定該子句中的currval()和nextval()引用了不同的索引 –