gpt4 book ai didi

php - postgres 故障 : SELECT currval(pg_get_serial_sequence ('interact' , 'interact_id' )) 进入 iidX;

转载 作者:行者123 更新时间:2023-11-29 12:12:00 25 4
gpt4 key购买 nike

我有一个用于报告错误的 postgres 函数。它使用调用

SELECT currval(pg_get_serial_sequence('interact', 'interact_id')) into xxx;

这个函数在php中有两种使用方式。在一种情况下,在调用函数之前访问表 interact。在这种情况下,调用(似乎)有效。在第二种情况下,调用函数之前未使用 interact,函数失败并显示消息:

currval of sequence "interact_interact_id_seq" is not yet defined in this session
CONTEXT: SQL statement "SELECT currval(pg_get_serial_sequence('interact', 'interact_id'))"
PL/pgSQL function "reporterror" line 5 at SQL statement
SQL statement "SELECT reportError( 'File(bname='|| bname || ' no location data:' || SQLERRM )"
PL/pgSQL function "uploadconfirm" line 32 at PERFORM in /home/berman/public_html/gps-photo.org/php/processFile.php on line 186

从 psql 中,您可以看到该表和一条类似的错误消息,其中包含以下短语:“尚未在此 session 中定义”。

 \dSt interact;
Table "public.interact"
Column | Type | Modifiers
webrequest | text | not null
interact_id | integer | not null default nextval('interact_interact_id_seq'::regclass)
ctime | timestamp without time zone | default now()
uid | integer |
successful | boolean | default false
Indexes:
"interact_pkey" PRIMARY KEY, btree (interact_id)
Referenced by:
TABLE "files" CONSTRAINT "files_interac_fk" FOREIGN KEY (interact_id) REFERENCES interact(interact_id)

pony=> SELECT currval(pg_get_serial_sequence('interact', 'interact_id')) ;
ERROR: currval of sequence "interact_interact_id_seq" is not yet defined in this session

我不知道我做错了什么。有人可以帮忙吗。谢谢。

最佳答案

你没有做错任何事 ;) 你只需要在每个 session 中“初始化”序列。这是通过调用 nextval() 来完成的。调用 nextval 后 - 您将能够调用 currval(它将给出 nextval 最后返回的值)。

According to to the doc :

currval(regclass) bigint - Return value most recently obtained with nextval for specified sequence

关于php - postgres 故障 : SELECT currval(pg_get_serial_sequence ('interact' , 'interact_id' )) 进入 iidX;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29196835/

25 4 0