serial字段,有个函数可以获取到最后插入的序列值,但是好像只能获取到当前会话最后一次插入的序列值,不论是SELECT dbinfo('sqlca.sqlerrd1') FROM dual;,还是select dbinfo('bigserial') from dual;,或者select dbinfo('serial8') from dual;,都没有办法针对某张表获取这张表的最新序列值。由此给出一下函数:
SELECT t.tabname, GREATEST(p.serialv,p.cur_serial8,cur_bigserial) AS cur_serial
FROM systables t, sysmaster:sysptnhdr p
WHERE t.partnum = p.partnum
AND t.tabname = 'systables'; -- 表名
但这个可能会有缓存,有GREATEST的,就是不管你serial,serial8,bigserial都行。
例子如下:
create table serv(id serial,name varchar(20));
insert into serv(name) values('name1');--cur_serial为2
insert into serv(name) values('name2');--cur_serial为3
insert into serv(name) values('name3');--cur_serial为4
insert into serv(name) values('name4');--cur_serial为5
delete from serv;--cur_serial为5