Str*_*rae 3 php postgresql insert-id
我想知道我用来检索postgresql表中插入的最后一行的id的方式是有效的..
显然,它可以工作,但是当我有许多用户同时在同一个表中添加行时,引用串行序列currval值可能会有问题.
我的实际方式是:
$pgConnection = pg_connect('host=127.0.0.1 dbname=test user=myuser password=xxxxx')or die('cant connect');
$insert = pg_query("INSERT INTO customer (name) VALUES ('blabla')");
$last_id_query = pg_query("SELECT currval('customer_id_seq')");
$last_id_results = pg_fetch_assoc($last_id_query);
print_r($last_id_results);
pg_close($pgConnection);
Run Code Online (Sandbox Code Playgroud)
好吧,它只是一个测试atm.但无论如何,我可以用这种方式看到3个问题:
有什么建议/更好的方法吗?
ps:我不能使用PDO,因为似乎缺少事务保存点; 我不会使用zend,最后,我更喜欢使用php pg_*函数(也许我最终会构建我的类)
编辑:
@SpliFF(他们删除了他的回答):这会更好吗?
$pgConnection = pg_connect('host=127.0.0.1 dbname=test user=myuser password=xxxxx')or die('cant connect');
pg_query("BEGIN");
$insert = pg_query("INSERT INTO customer (name) VALUES ('blabla')");
$last_id_query = pg_query("SELECT currval('customer_id_seq')");
$last_id_results = pg_fetch_assoc($last_id_query);
print_r($last_id_results);
//do somethings with the new customer id
pg_query("COMMIT");
pg_close($pgConnection);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6775 次 |
| 最近记录: |