informix自10開始可以產(chǎn)生序列(sequence)。序列(sequence)有時(shí)候也被叫做序列產(chǎn)生器(sequence
generator)或序列對(duì)象(sequence object)。它產(chǎn)生一個(gè)單調(diào)增或單調(diào)減的整數(shù)序列。
創(chuàng)建序列:
改變序列:
ALTER
SEQUENCE seq_2 RESTART WITH 5 INCREMENT by 2 MAXVALUE
300;該實(shí)例修改seq_2為產(chǎn)生從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) --再次插入數(shù)據(jù) SELECT * FROM tab1; 當(dāng)序列產(chǎn)生的值超過最大值時(shí),則會(huì)出現(xiàn)如下錯(cuò)誤:8313: Sequence (informix.seq_2) exceeds its MAXVALUE. 要注意的是:
①第一次nextval返回的是初始值;隨后的nextval會(huì)自動(dòng)增加你定義的increment
by值,然后返回增加后的值。
②如果指定cache值,就可以預(yù)先在內(nèi)存里面放置一些sequence,這樣存取的快些。cache里面的取完后,自動(dòng)再取一組到cache。
使用cache或許會(huì)跳號(hào), 比如數(shù)據(jù)庫突然不正常down掉(shutdown abort),cache中的sequence就會(huì)丟失.
所以可以在create sequence的時(shí)候用nocache防止這種情況
|
|