oracle自增
oracle中主鍵自增
下面用一個例子來說明自增主鍵的創建:
1、建用戶數據表
????? drop table dectuser;
????? create table dectuser(
?????????? userid integer primary key,? /*主鍵,自動增加*/
?????????? name varchar2(20),
????????? ?sex varchar2(2)
?????????? );2、創建自動增長序列
????? drop sequence dectuser_tb_seq;
????? create sequence dectuser_tb_seq minvalue 1 maxvalue 99999999
?????????????? increment by 1
?????????????? start with 1;?? /*步長為1*/
3、創建觸發器
????? create or replace trigger dectuser_tb_tri
????????? before insert on dectuser???? /*觸發條件:當向表dectuser執行插入操作時觸發此觸發器*/
??????????for each row???????????????????????/*對每一行都檢測是否觸發*/
??????????begin????????????????????????????????? /*觸發器開始*/
???????????????? select dectuser_tb_seq.nextval into :new.userid from dual;?? /*觸發器主題內容,即觸發后執行的動作,在此是取得序列dectuser_tb_seq的下一個值插入到表dectuser中的userid字段中,注意:new.userid 是new.加上原表的主鍵*/
????????? end;
???
????????? /??????????????????????????????????????? /*退出sqlplus行編輯*/
4、提交
??????commit;
?
??????現在就完成了自增主鍵的設定,搞定!可以檢測一下。
????? insert into dectuser(name,sex) values ('wang','女');
????? 提示“已創建一行”,表示成功。呵呵:D
方法二:
?
| ? oracle中創建自增主鍵 首先,創建一張表 CREATE TABLE example( ID Number(4) NOT NULL PRIMARY KEY, NAME VARCHAR(25), PHONE VARCHAR(10), ADDRESS VARCHAR(50)); 然后,你需要一個自定義的sequence CREATE SEQUENCE emp_sequence INCREMENT BY 1 -- 每次加幾個 START WITH 1 -- 從1開始計數 NOMAXVALUE -- 不設置最大值 NOCYCLE -- 一直累加,不循環 NOCACHE -- 不建緩沖區 以上代碼完成了一個序列(sequence)的建立過程,名稱為emp_sequence,范圍是從1開始到無限大(無限大的程度是由你機器決定的),nocycle 是決定不循環,如果你設置了最大值那么你可以用cycle 會使seq到最大之后循環.對于nocache順便說一下如果你給出了cache值那么系統將自動讀取你的cache值大小個seq ,這樣在反復操作時會加快運行速度,但如果遭遇意外情況如當機了或oracle死了,則下次取出的seq值將和上次的不連貫 書接上文,你只有了表和序列還不夠,還需要一個觸發器來執行它!代碼如下: CREATE or replace TRIGGER "觸發器名稱" BEFORE INSERT ON example FOR EACH ROW WHEN (new.id is null) begin select emp_sequence.nextval into: new.id from dual; end; 插入數據 INSERT INTO example(Name,phone,address) Values('Cao','56498543','Heibei'); ============================================================= ORACLE SEQUENCE的簡單介紹(自增長字段)- |
轉載于:https://www.cnblogs.com/zhoushengbing/p/3253089.html
總結
- 上一篇: StringBuffer的用法
- 下一篇: 2013 Multi-Universit