Postgresql 在PL/pgSQL内部插入后获取默认序列值
我有一张桌子。我在plpgsql中编写了一个函数,在该表中插入一行:Postgresql 在PL/pgSQL内部插入后获取默认序列值,postgresql,plpgsql,sql-insert,sql-returning,nextval,Postgresql,Plpgsql,Sql Insert,Sql Returning,Nextval,我有一张桌子。我在plpgsql中编写了一个函数,在该表中插入一行: INSERT INTO simpleTalbe (name,money) values('momo',1000) ; 此表具有名为id的serial字段。我想在插入行后在函数中知道新行收到的id 我想用: select nextval('serial'); 在插入之前,是否有更好的解决方案?使用该子句。您需要将结果保存在PL/pgSQL中的某个位置,并将附加到中 INSERT INTO simpleTalbe (name,
INSERT INTO simpleTalbe (name,money) values('momo',1000) ;
此表具有名为id
的serial
字段。我想在插入行后在函数中知道新行收到的id
我想用:
select nextval('serial');
在插入之前,是否有更好的解决方案?使用该子句。您需要将结果保存在PL/pgSQL中的某个位置,并将附加到中
INSERT INTO simpleTalbe (name,money) values('momo',1000)
RETURNING id
INTO _my_id_variable;
\u my\u id\u变量
必须使用匹配的数据类型声明
相关的:
根据您计划如何使用它,使用纯SQL通常会有更好的解决方案。示例:
使用该子句。您需要将结果保存在PL/pgSQL中的某个位置,并将
附加到中
INSERT INTO simpleTalbe (name,money) values('momo',1000)
RETURNING id
INTO _my_id_variable;
\u my\u id\u变量
必须使用匹配的数据类型声明
相关的:
根据您计划如何使用它,使用纯SQL通常会有更好的解决方案。示例:
选择nextval(“串行”)代码>不会做你想做的事nextval()。(另外,'serial'不是serial
列使用的序列名称。)
@Erwin的答案(INSERT…RETURNING
)是最好的答案,因为语法是专门针对这种情况引入的,但是您也可以执行以下操作:
SELECT currval('simpletalbe_id_seq') INTO ...
在插入后的任何时间,检索序列的当前值。(注意序列名称格式tablename_columnname_seq,用于支持serial
列的自动定义序列)。选择nextval('serial')代码>不会做你想做的事nextval()。(另外,'serial'不是serial
列使用的序列名称。)
@Erwin的答案(INSERT…RETURNING
)是最好的答案,因为语法是专门针对这种情况引入的,但是您也可以执行以下操作:
SELECT currval('simpletalbe_id_seq') INTO ...
在插入后的任何时间,检索序列的当前值。(注意序列名称格式tablename_columnname_seq,用于支持序列
列的自动定义序列。)查看底部的插入返回
查看底部的插入返回