這里所說的自動增長列,主要是指一個表中主鍵id的自動增長。
Oracle與Mysql不同,不能在CREATE建立表時設置自動增長列功能。
Oracle必須通過創(chuàng)建sequence序列來實現(xiàn)自動增加列的功能。
首先要建立序列(當然必須要先建好表,添加好主鍵約束,這列假設約束名為test_sequence)
create sequence test_sequence
[increment by 1]--增長的步長
[start with 1]--從幾開始增長
[maxvalue 100]--增長的最大值
[nomaxvalue]--不設最大值
[cycle|nocycle];--循環(huán)增長/不循環(huán)增長
定義了sequence以后就可以在insert語句中使用test_sequence.nextval和test_sequence.currval。
test_sequence.currval返回當前sequence的值,但必須在第一次初始化test_sequence.nextval后才能使用test_sequence.currval。
test_sequence.nextval會增加sequence的值,并返回增加后的sequence的值。
然后可以alter修改sequence序列,來改變自動增加的方式。
alter sequence test_sequence increment by 1 ...;后面的選項跟建表時一樣。
還可以用drop刪除sequence序列。
drop sequence test_sequence;
Mysql先對Oracle來說就簡單多了,可以在建表時進行設置。
auto_increment=1設置自動增長列從1開始