当序列号超过最大值时,有没有办法使序列号自动重置?(From DBMR1836)

~ 0 min
2016-02-24 05:02

通过存储过程和触发器可以达到此目的。

例如:假设这有一个名为 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));

 

平均分: 0 (0 投票)

你不能对该内容发表评论

标签