`

Oracle创建自增主键的方法之使用sequence+trigger

 
阅读更多

Oracle中没有像mysql中那样自增的方式(auto_increment),可以使用sequence+trigger的方式来实现该功能。

 

1、有下面一张表:

create table ecp_docfiles (id number(10) primary key  , contractcode varchar2(150) ,filename varchar2(30) not null unique,createdate timestamp default sysdate,isactive char(2) default '1' );

id是主键。

 

2,创建一个sequence。

 create sequence sequence_ecp_docfiles
   increment by 1   --每次自增1
  start with 1    --从1开始
  nomaxvalue    -- 不设置最大值
  nocycle  --不循环,一直累加
  cache  10;  

 -- 为了加快读取速度,可以设置cache,既每次预加10个序列号,但如果数据库服务器宕机,就会造成cache中预加的序列号丢失,从而致使表中的序列不是连续的。

 

3.创建一个trigger,在对ecp_docfiles表进行insert时,就会自动的将id值自增。

create or replace trigger tigger_ecp_docfiles
  before insert on ecp_docfiles 
  for each row
declare
  nextid number;
begin
  if :new.id is null or :new.id = 0 then
     select sequence_ecp_docfiles.nextval
         into nextid
     from sys.dual;
     :new.id := nextid;
  end if; 
end tigger_ecp_docfiles;

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics