Php 使用pg_insert()后,如何确定插入行的pkey?

Php 使用pg_insert()后,如何确定插入行的pkey?,php,postgresql,insert,sql-returning,Php,Postgresql,Insert,Sql Returning,我需要能够识别我在使用pg_insert后刚刚插入的行,但文档只是说它返回true/false。如何从pg_insert()确定记录的pkey?我知道我可以使用一个手工编制的查询,最后带有一个“RETURNING pkey”,但我不想使用pg_query(),因为pg_insert会自动为您转义所有内容,所以我想使用它。由于pgsql中没有id概念(仅序列),您可以使用以下代码 SELECT currval(pg_get_serial_sequence(tablename, 'id')); 您

我需要能够识别我在使用pg_insert后刚刚插入的行,但文档只是说它返回true/false。如何从pg_insert()确定记录的pkey?我知道我可以使用一个手工编制的查询,最后带有一个“RETURNING pkey”,但我不想使用pg_query(),因为pg_insert会自动为您转义所有内容,所以我想使用它。

由于pgsql中没有id概念(仅序列),您可以使用以下代码

SELECT currval(pg_get_serial_sequence(tablename, 'id'));
您可以使用with
RETURNING
子句并使用参数转义所有内容

此函数的唯一问题是,当发生错误时,您无法知道问题的真正原因。获取正确的错误消息意味着使用


请参阅。

这可能不起作用,因为序列不区分事务。另一次插入可能发生在插入和获取最后一个\u id之间。您可以与
RETURNING
子句一起使用,并使用参数来转义所有内容。@greg awesome。请将此作为答案添加,以便我选择它。