標籤:art 選項 str acl 錯誤 最大 alt 最小 color
題記:在使用Oracle資料庫的時候,發現Oracle是沒有自動成長列來實現主鍵的,所以在此記錄學習。(PS:如果哪裡有錯誤或者不足的地方還請大家幫忙指出來)
二、序列(自動成長列)
為此問題博主也是各種搜尋,挖貼子,最終也沒有找到為什麼Oracle沒有自增列這一原因,還望有大牛看到出來指點迷津,在此謝過了。
因為在SQL Server中有會自動產生的“自動成長列”來實現主鍵”,很是方便,所以在換用Oracle的時候還是有點不習慣的,不過俗語說得好,不管白貓黑貓,捉到老鼠就是好貓;在Oracle中便使用序列來實現這一功能的。
1.建立序列
1 /* 2 建立序列 3 */ 4 --注意命名規範 5 CREATE SEQUENCE sequence_name 6 --指定要產生的第一個序列,對於升序,預設值為最小值;對於降序,預設值為最大值 7 [START WITH integer] 8 --用於指定序號之接的間隔,預設值為1 , 若值為正值,則產生序列按升序排列;若為負值,則產生序列為降序排列 9 [INCREMENT BY integer]10 --MAXVALUE:指定序列可以產生最大值;11 --NOMAXUALUE:如果指定了NOMAXUALUE,Oracle將升序序列的最大值設為10^27,將降序序列的最大值設為-1;此為預設選項12 [MAXVALUE integer|NOMAXUALUE]13 --MINVALUE:指定序列的最小值,必須小於或等於START WITH值,並且必須小於MAXVALUE;14 --NOMAXUALUE:如果指定NOMAXUALUE,Oracle將升序序列的最小值設為1,將降序序列的最小值設為-10^26;此為預設選項15 [MINVALUE integer|NOMINUALUE]16 --CYCLE:指定序列達到最大值或者最小值之後,將重新從頭開始產生值17 --NOCYCLE:指定序列達到最大值或者最小值之後,將不能在繼續產生值18 [NOCYCLE|CYCLE]19 --CACHE:預先緩衝分配一組序號,並將其保留在記憶體中,這樣可以更快的訪問序號。當緩衝序號用完時,將產生另一組序號將其保留在緩衝中20 --NOCACHE:關閉緩衝,忽略此選項預設緩衝20個序號21 [CACHE integer|NOCACHE];
2.訪問序列
1 /*2 例 訪問序列3 */4 --使用NEXTVAL建立序列後第一次調用返回初始值,之後再次引用時,將使用INCREMENT BY子句來增加的值,並返回這個新值5 INSERT INTO tableName(id,name,price)6 VALUES(sequence_name.NEXTVAL,BigRoc,1);7 8 --返回序列的當前值,即最後一次引用NEXTVAL時返回的值,dual是Oracle提供的一張表 只會返回一行一列記錄9 SELECT sequence_name.CURRVAL FROM dual;
3.更改序列
1 ALTER SEQUENCE sequence_name 2 3 [INCREMENT BY integer] 4 5 [MAXVALUE integer|NOMAXUALUE] 6 7 [MINVALUE integer|NOMINUALUE] 8 9 [NOCYCLE|CYCLE]10 11 [CACHE integer|NOCACHE];
注意:不能修改序列的START WITH參數,在修改序列時應注意升序序列的最小值應小於最大值!!!
4.刪除序列
1 DROP SEQUENCE sequence_name;
注意:使用序列中 在資料庫遷移的時候需注意,因為遷移後表中已存在資料,如不修改起始值,便會違背主鍵約束,所以在建立序列時要修改序列的起始值。
每天記錄一點,就能多學一點。
oracle學習 筆記(2)