天天看點

SQL AUTO INCREMENT 字段

下列 sql 語句把 "persons" 表中的 "p_id" 列定義為 auto-increment 主鍵:

ms sql 使用 identity 關鍵字來執行 auto-increment 任務。

預設地,identity 的開始值是 1,每條新記錄遞增 1。

要規定 "p_id" 列以 20 起始且遞增 10,請把 identity 改為 identity(20,10)

要在 "persons" 表中插入新記錄,我們不必為 "p_id" 列規定值(會自動添加一個唯一的值):

上面的 sql 語句會在 "persons" 表中插入一條新記錄。"p_id" 會被賦予一個唯一的值。"firstname" 會被設定為 "bill","lastname" 列會被設定為 "gates"。

2、

在 oracle 中,代碼稍微複雜一點。

您必須通過 sequence 對建立 auto-increment 字段(該對象生成數字序列)。

請使用下面的 create sequence 文法:

上面的代碼建立名為 seq_person 的序列對象,它以 1 起始且以 1 遞增。該對象緩存 10 個值以提高性能。cache 選項規定了為了提高通路速度要存儲多少個序列值。

要在 "persons" 表中插入新記錄,我們必須使用 nextval 函數(該函數從 seq_person 序列中取回下一個值):

上面的 sql 語句會在 "persons" 表中插入一條新記錄。"p_id" 的指派是來自 seq_person 序列的下一個數字。"firstname" 會被設定為 "bill","lastname" 列會被設定為 "gates"。

小注:

1、sequence與并不針對某個表。

2、increment by 1 -- 每次增加1

     start with 1 -- 從1開始計數

     nomaxvalue -- 不設定最大值

     nocycle -- 一直累加,不循環

     nocache -- 不建緩沖區

3、一旦定義了seq_person,你就可以用currval,nextval

currval=傳回sequence的目前值

nextval=增加sequence的值,然後傳回sequence值