informix自10开始可以产生序列(sequence)。序列(sequence)有时候也被叫做序列产生器(sequence
generator)或序列对象(sequence object)。它产生一个单调增或单调减的整数序列。
创建序列:
改变序列:
ALTER
SEQUENCE seq_2 RESTART WITH 5 INCREMENT by 2 MAXVALUE
300;该实例修改seq_2为产生从5开始,最大值300,每次递增2的序列重命名序列: rename sequence seq_2 to seq_3 该语句修改seq_2的名字为seq_3,但功能不变。 删除序列: DROP SEQUENCE seq_2; 该语句删除序列seq_2。 CREATE TABLE tab1 (col1 int, col2 int);
INSERT INTO tab1 (col1, col2) VALUES (seq_2.NEXTVAL, seq_2.NEXTVAL)
SELECT * FROM tab1;
ALTER SEQUENCE seq_2 RESTART WITH 5 INCREMENT by 2 MAXVALUE 300; --修改序列 INSERT INTO tab1 (col1, col2) VALUES (seq_2.NEXTVAL, seq_2.NEXTVAL) --再次插入数据 SELECT * FROM tab1; 当序列产生的值超过最大值时,则会出现如下错误:8313: Sequence (informix.seq_2) exceeds its MAXVALUE. 要注意的是:
①第一次nextval返回的是初始值;随后的nextval会自动增加你定义的increment
by值,然后返回增加后的值。
②如果指定cache值,就可以预先在内存里面放置一些sequence,这样存取的快些。cache里面的取完后,自动再取一组到cache。
使用cache或许会跳号, 比如数据库突然不正常down掉(shutdown abort),cache中的sequence就会丢失.
所以可以在create sequence的时候用nocache防止这种情况
|
|
来自: 昵称15242507 > 《Java》