Oracle不具有已定義好的自動編號列,需要手工創建,下面就Oracle自動編號列創建的方法進行歸納:
1. 首先需要給要添加Oracle自動編號列的表創建索引,被索引的列就是後面要實現的自動編號列,這樣的列往往是名為“ID”的列。創建索引可以通過OEM創建,也可以 在SQL*Plus或PL/SQL中通過SQL語句創建。以方案LY中的表HARD為例,給其hard_id列創建索引的SQL語句為:
2. 然後需要創建一個最小值為1,最大值不限,遞增值為1的序列。序列的創建同樣可以通過OEM或直接輸入SQL語句創建。創建序列的SQL語句為:
- CREATE UNIQUE INDEX LY.HARD ON LY.HARD(hard_id);
3.最後為表LY.HARD創建觸發器,以實現在每次插入行時,hard_id列自動遞增編號。觸發器的創建同樣可以方便的由OEM創建,也可以用SQL語句創建。下面為創建觸發器的SQL語句:
- drop sequence HARD_SEQ;
- create sequence HARD_SEQ
- minvalue 1
- maxvalue 999999999999999999999999999
- start with 21
- increment by 1
- cache 20
- order;
- CREATE OR REPLACE TRIGGER "HARD_ID_TRIGGER" BEFORE
- INSERT ON "LY"."HARD" FOR EACH ROW
- declare
- next_checkup_no number;
- begin
- select hard_seq.nextval
- into next_checkup_no
- from dual;
- :NEW.hard_id := next_checkup_no;
- end;
值得小心的地方,在用OEM創建觸發器時,有可能出現“Failed to commit: 索引中丟失 IN 或 OUT 參數:: 1”的錯誤提示,在網上查閱了一些資料,認為這可能是Oracle中的一個BUG,所以建議使用SQL語句創建觸發器。
以上就是Oracle自動編號列創建的方法,要想了解的更多請留意網站上的相關論壇。