下列 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值