返回vs currval postgresql

时间:2014-01-15 06:59:43

标签: sql postgresql sequence

我执行以下查询:

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做同样的事情,然后将其传递给下一个查询,最好的方法是什么?

1 个答案:

答案 0 :(得分:1)

我更喜欢RETURNING,因为同样的方法适用于多值结果。

只有一个结果行时才能使用currval

此外,我不相信nextvalcurrval之间的评估顺序在出现在同一VALUES子句中时会得到保证。因此,获取RETURNING中的值并将其作为参数提供给下一个查询会更安全。