Oracle主鍵自動增加的方法與總結


第一步:添加主鍵(如果已有且是自己命名的可略過)

    一個表中要有主鍵,我們建主鍵的時候要自己命名,如果不是可能在后邊遇到“主鍵唯一,不能自動添加”的問題。

  設置主鍵:
      alter  table "表的名字"  add  constraint "主鍵名字"   primary  key (id); 

 

第二步:創建序列

/*在Oracle中,可以為每張表的主鍵創建一個單獨的序列,
然后從這個序列中獲取自動增加的標識符,把它賦值給主鍵。
例如一下語句創建了一個名為user_id_seq 的序列,
這個序列的起始值為1,增量為1。*/

 

create sequence user_id_seq increment by 1 start with 1;
create sequence user_id_seq
minvalue 1
maxvalue 99999999999
start with 1
increment by 1
cache n  / nocache  --其中n代表一個整數,默認值為20

/*

如果指定CACHE值,Oracle就可以預先在內存里面放置一些Sequence,這樣存取的快些。cache里面的取完后,Oracle自動再取一組到cache。使用cache或許會跳號, 比如數據庫突然不正常down掉(shutdown abort),cache中的Sequence就會丟失。舉個例子:比如你的sequence中cache 100,那當你sequence取到90時突然斷電,那么在你重啟數據庫后,sequence的值將從101開始。

*/

第三步:創建觸發器


/*如果每次都要插入user_id_seq.nextval的值會非常累贅與麻煩,
因此可以考慮使用觸發器來完成這一步工作。
創建觸發器trg_user_id_seq*/
create or replace trigger trg_user_id_seq BEFORE
insert ON users FOR EACH ROW WHEN (new.id is null)
begin select user_id_seq.nextval into:new.id from dual;
end trg_user_id_seq ;

--編譯 trigger 語句如下:
--ALTER TRIGGER trg_user_id_seq COMPILE;
--commit;

 

第四步:enjoy it !!!

insert into 你的表,可以不用設置主鍵!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM