当序列号超过最大值时,有没有办法使序列号自动重置?(From DBMR1836)
通过存储过程和触发器可以达到此目的。
例如:假设这有一个名为 t1 (c1 serial)的表
[存储过程]
$ create procedure sp1(char(32) tbname, int ns1); { $ begin declare section;
char sqlstring[100];
$ end declare section;
$ begin code section;
if (ns1 >= 2147483646)
{
sprintf(sqlstring, "alter table %s set serial 0", tbname);
$ execute immediate from :sqlstring;
}
$ end code section;
}
[SQL命令]
create procedure from 'sp1.ec';
create trigger tr1 after insert on t1 for each row (call sp1('t1', new.c1));