您的当前位置:首页正文

Oracle主键自动增加的方法与总结

2020-10-09 来源:要发发教育
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_seqminvalue 1

maxvalue 99999999999start with 1increment 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 你的表,可以不⽤设置主键!!

因篇幅问题不能全部显示,请点此查看更多更全内容