程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Oracle自動編號列的創建

Oracle自動編號列的創建

編輯:Oracle數據庫基礎

Oracle不具有已定義好的自動編號列,需要手工創建,下面就Oracle自動編號列創建的方法進行歸納:

1. 首先需要給要添加Oracle自動編號列的表創建索引,被索引的列就是後面要實現的自動編號列,這樣的列往往是名為“ID”的列。創建索引可以通過OEM創建,也可以 在SQL*Plus或PL/SQL中通過SQL語句創建。以方案LY中的表HARD為例,給其hard_id列創建索引的SQL語句為:

  1. CREATE UNIQUE INDEX LY.HARD ON LY.HARD(hard_id); 
2. 然後需要創建一個最小值為1,最大值不限,遞增值為1的序列。序列的創建同樣可以通過OEM或直接輸入SQL語句創建。創建序列的SQL語句為:

  1. drop sequence HARD_SEQ;  
  2.         create sequence HARD_SEQ  
  3.         minvalue 1  
  4.         maxvalue 999999999999999999999999999  
  5.         start with 21  
  6.         increment by 1  
  7.         cache 20  
  8.         order;  
3.最後為表LY.HARD創建觸發器,以實現在每次插入行時,hard_id列自動遞增編號。觸發器的創建同樣可以方便的由OEM創建,也可以用SQL語句創建。下面為創建觸發器的SQL語句:  

  1. CREATE OR REPLACE TRIGGER "HARD_ID_TRIGGER" BEFORE  
  2.         INSERT ON "LY"."HARD" FOR EACH ROW  
  3.         declare  
  4.         next_checkup_no number;  
  5.         begin  
  6.         select hard_seq.nextval  
  7.         into next_checkup_no  
  8.         from dual;  
  9.         :NEW.hard_id :next_checkup_no;  
  10.        end;  

值得小心的地方,在用OEM創建觸發器時,有可能出現“Failed to commit: 索引中丟失 IN 或 OUT 參數:: 1”的錯誤提示,在網上查閱了一些資料,認為這可能是Oracle中的一個BUG,所以建議使用SQL語句創建觸發器。

以上就是Oracle自動編號列創建的方法,要想了解的更多請留意網站上的相關論壇。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved