oracle 實現插入自增列(類似SqlServer Identity)


oracle不像sql 
server 有關鍵字identity直接可插入數據時自增 ,Oracle是不能用Identity,可以使用Sequence

Create Table Tempinfo(
       ids int not null,
       names nvarchar2(50),
       sex varchar(10)
)

insert into Tempinfo (ids,names,sex) values (1,'Serein',2188);
insert into Tempinfo (ids,names,sex) values (2,'James',2182);

select * from Tempinfo

--drop table Tempinfo

實現oracle 自增列第一步,創建一個sequence

CREATE SEQUENCE Tempinfo_seq 

 INCREMENT BY 1 -- 每次加幾個 

 START WITH 1 -- 從1開始計數 

 NOMAXvalue -- 不設置最大值 

 NOCYCLE -- 一直累加,不循環  

 CACHE 10; --設置緩存cache個序列,如果系統down掉了或者其它情況將會導致序列不連續,也可以設置為---------NOCACHE

一旦定義了Tempinfo_seq,你就可以用currval,nextval
    currval=返回 sequence的當前值
    nextval=增加sequence的值,然后返回 sequence 值

比如:
    Tempinfo_seq.CURRVAL
    Tempinfo_seq.NEXTVAL

第二步,創建一個觸發器。

create or 
replace trigger userlogin_trigger
before insert on Tempinfo
for each 
row
begin
      select  Tempinfo_seq.Nextval    into:new.ids from sys.dual 
;
end;

執行插入查看

insert into  Tempinfo (names,sex) values ('Terry',2189);

 當然也事不用創建觸發器,直接在插入數據時使用sequence就可以了

insert into Tempinfo (ids,names,sex) values (Tempinfo_seq.Nextval,'Serein',2188);

 可以使用sequence的地方:
    - 不包含子查詢、snapshot、view的 select 語句
    - INSERT語句的子查詢中
    - NSERT語句的values中
    - UPDATE 的 set中

 

刪除序列
    簡單的Drop Sequence
    Sql代碼

  drop sequence Tempinfo_seq;

 

 

參考:  oracle 實現插入自增列   

        Oracle 使用序列創建自增字段


免責聲明!

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



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