2014-09-10 21 views
1

在Oracle SQL,一個序列dfined像這樣:SQL序列的「START WITH」部分的用途是什麼?

CREATE SEQUENCE sup_seq 
    MINVALUE 1 
    MAXVALUE 999 
    START WITH 5 
    INCREMENT BY 1 
    CACHE 20; 

什麼是具有「開始」部分的點?如果我們有一個最小值,這並不意味着我們從那個值開始? START WITH有什麼用?

+2

顧名思義,默認的起始號碼是您指定的最小值。有時,當一些舊數據(在表格中)已經存在並且最大數量爲1000時,我們可能需要從1001開始我們的序列。在這種情況下,「START WITH」將使我們受益! – 2014-09-10 22:18:17

回答

5

通常,在定義序列時指定MINVALUESTART WITH並且使這些值不同是非常不尋常的。就我個人而言,我認爲我從未明確指定過MINVALUE,因爲我發現START WITH更明瞭。

兩個值有用的一種情況是設置爲循環的序列。例如

CREATE SEQUENCE sup_seq 
    MINVALUE 1 
    MAXVALUE 999 
    START WITH 5 
    INCREMENT BY 1 
    CACHE 20 
    CYCLE; 

將通過999(所述maxvalue)與5(start with),生成的值開始,然後在1(minvalue)重新啓動。這不是一個特別常見的用例,但完全有可能。