Top*_*gio 3 php database postgresql
我在Google上搜索并阅读了几篇关于不同人如何处理这个问题的文章,但我想知道解决它的标准方法是什么,以及哪一个最适合我的情况.
我有一个AJAX页面,它创建了一个新问题,我需要知道如何从同一个php文件中的插入查询中检索ID,在下一行.
它看起来像这样:
$r = pg_query("INSERT INTO questions (audit_id, type_id, order) VALUES (1,1,1)");
// Fetch ID from $r here...
Run Code Online (Sandbox Code Playgroud)
我已经看到了mysql_insert_id()MySQL 的功能,并且听说pg_last_oid()类似于PostgreSQL,但文档声称它已被弃用并将很快删除.我也看到了使用CURRVAL('my_sequence_table.id')但我不确定这是否适用于AJAX,因为这可能会引发竞争条件.
有人可以告诉我标准的 PHP/PostgreSQL方法来解决这个问题吗?我非常感谢任何评论.
PS我想念Ruby on Rails!
可能你最好的选择是使用INSERT INTO questions ... VALUES (1,1,1) RETURNING audit_id,因为无论你手动插入值还是通过序列插入值,这都会给你正确的价值.
请注意,currval()如果您获得相同的会话,该技巧肯定会起作用 - currval()保证返回与传递到您的会话的序列相同的值,而不管其他并发会话正在做什么.它只会导致一个问题,如果你有一个连接pooler以某种方式使用不同的连接作为第一个查询而不是第二个查询,但如果它这样做,它会破坏一个pooler.我知道没有那种做事情的傻瓜.
更新:请参阅pg_get_serial_sequence()函数,该函数采用表和列名称并返回关联的序列名称.使用比在代码中对序列名称进行硬编码更实用.
| 归档时间: |
|
| 查看次数: |
297 次 |
| 最近记录: |