我如何使用来自另一个 php 文件的 PostgreSql 的 CURRVAL / RETURNING?

How can I use PostgreSql's CURRVAL / RETURNING from another php file?

我正在从一个 php 文件 运行ning 一个 INSERT 查询,但是我需要从一个外部 php 文件中获取最后插入的 ID,所以至于 运行 另一个基于该 ID 的查询。我怎样才能使用 CURRVALRETURNING 来解决这个问题?从外部 php 文件,如果我做类似

$result = pg_query($db,"SELECT CURRVAL('app.example_id_seq'), ... ");我没有得到结果。

您可以像查询 table:

一样查询序列
SELECT last_value
FROM app.example_id_seq
WHERE is_called;

如果序列从未被使用过(那么 is_calledFALSE),这将 return 没有结果。

但这不是确定新插入的 table 行的 ID 的错误值。只有在插入行后没有其他人使用该序列时,它才会起作用。还有,你无法判断插入是否失败。

不确定您示例中的树点是做什么用的。然而:

select currval('app.example_id_seq'::regclass);

应该可以。有时它可能会失败:

ERROR:  55000: currval of sequence "example_id_seq" is not yet defined in this session

所以在 currval 之前没有调用 nextval。但是,如果您调用 insert into 有效,那么 currval 也必须有效。

要开始使用 RETURNING,请访问 docs - 提供了示例。基本上,您列出的是应该作为插入或更新结果的列名。