Oracle自動編號列的創(chuàng)建
Oracle不具有已定義好的自動編號列,需要手工創(chuàng)建,下面就Oracle自動編號列創(chuàng)建的方法進(jìn)行歸納:
1. 首先需要給要添加Oracle自動編號列的表創(chuàng)建索引,被索引的列就是后面要實(shí)現(xiàn)的自動編號列,這樣的列往往是名為“ID”的列。創(chuàng)建索引可以通過OEM創(chuàng)建,也可以 在SQL*Plus或PL/SQL中通過SQL語句創(chuàng)建。以方案LY中的表HARD為例,給其hard_id列創(chuàng)建索引的SQL語句為:
2. 然后需要創(chuàng)建一個最小值為1,***值不限,遞增值為1的序列。序列的創(chuàng)建同樣可以通過OEM或直接輸入SQL語句創(chuàng)建。創(chuàng)建序列的SQL語句為:
- CREATE UNIQUE INDEX LY.HARD ON LY.HARD(hard_id);
3.***為表LY.HARD創(chuàng)建觸發(fā)器,以實(shí)現(xiàn)在每次插入行時,hard_id列自動遞增編號。觸發(fā)器的創(chuàng)建同樣可以方便的由OEM創(chuàng)建,也可以用SQL語句創(chuàng)建。下面為創(chuàng)建觸發(fā)器的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創(chuàng)建觸發(fā)器時,有可能出現(xiàn)“Failed to commit: 索引中丟失 IN 或 OUT 參數(shù):: 1”的錯誤提示,在網(wǎng)上查閱了一些資料,認(rèn)為這可能是Oracle中的一個BUG,所以建議使用SQL語句創(chuàng)建觸發(fā)器。
以上就是Oracle自動編號列創(chuàng)建的方法,要想了解的更多請留意網(wǎng)站上的相關(guān)論壇。
【編輯推薦】