【发布时间】:2015-08-31 22:57:07
【问题描述】:
我有以下存储过程:
CREATE PROCEDURE eukno(pk BIGINT, requestee VARCHAR(20))
RETURNING BIGINT;
DEFINE eunid BIGINT;
INSERT INTO ent_uniq (eunid, eunreq) VALUES (pk, requestee);
RETURN eunid;
END PROCEDURE;
我将值插入到表中,但我需要在此插入过程中返回主键值eunid 以获得确切值。 eunid 是一个起始值为 9999000000 的 BIGSERIAL 主键,所以在我第一次插入时,eunid 自动生成 9999000001
存储过程使用参数 (0, 'username') 执行,主程序自动加一。需要在插入时检索准确的 uniq eunid,因为许多用户会在一个瞬间请求此 ID。
【问题讨论】:
-
我将程序修改为如下:
-
创建过程 eukno(pk BIGINT) 返回 BIGINT;定义 eunid BIGINT;插入到 ent_uniq (eunid) 值 (pk);返回 DBINFO('serial8');结束程序;
-
然而,有了这个改变,我仍然是 0,我指定的插入值,而不是数据库生成的实际值。
-
请将您的 cmets 转移到问题的更新中(然后删除 cmets)。然后就可以正确格式化代码了。
-
是的,谢谢乔纳森。我昨天终于解决了,当我点击“回答你的问题”时,我们的网络崩溃了。很抱歉浪费您的时间。不过很高兴得到确认。