PHP Postgres:获取上次插入ID

Jon*_*nah 14 php sql postgresql sequence last-insert-id

我在这个主题上发现了其他一些问题.这个...

mysql_insert_id替代postgresql

...... 手册似乎表明你可以随时打电话lastval(),它会按预期工作.但这一个......

Postgresql和PHP:在多用户应用程序中,currval是一种检索最后一行插入id的有效方法吗?

......似乎表明它必须在交易中.所以我的问题是这样的:我可以在查询之前等待我喜欢的lastval()(没有交易)吗?面对许多并发连接,这是可靠的吗?

Eel*_*lke 31

PostgreSQL中的INSERT,UPDATE和DELETE有一个RETURNING子句,这意味着你可以这样做:

INSERT INTO ....
RETURNING id;
Run Code Online (Sandbox Code Playgroud)

然后查询将返回为插入的每行插入的id的值.将往返保存到服务器.

  • 谢谢!BTW,如果需要,您可以返回多个值 - RETURNING*将返回整个插入的行. (3认同)

Sjo*_*erd 6

是的,序列函数提供了多用户安全方法,用于从序列对象获取连续的序列值.