我有一张tablea
如下图所示的表格。
我想通过从前一个插入中tablea
获取前一个值来插入一行,即让它成为MAX(pid)
,所以默认情况下我的数据库中没有任何内容,所以 max 的查询返回 null 所以,然后我需要将 pid 设置为 0当我第一次插入时得到一个空值。
这是我的SQL FIDDLE ,我尝试使用一些 SQL 语句,正如我在 FIDDLE 中评论的那样。
create table tablea(
sno serial,
pid integer,
pname text
);
-- I am unable to retrieve the null value from the database and store it with pid as 0 so i had inserted this default value
insert into tablea(sno,pid,pname)
values(0,0,'default');
CREATE OR REPLACE FUNCTION insert_details(_pname text)
RETURNS void AS
$BODY$
declare
_pid int;
begin
_pid := ((select MAX(pid) from tablea)+1);
insert into tablea(pid,pname)
values(_pid,_pname);
end;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;