码迷,mamicode.com
首页 > 其他好文 > 详细

建立主键自增表

时间:2018-11-19 17:28:25      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:ber   oracl   缓冲区   acl   com   creat   --   nihao   role   

MySQL

在建表的时候声明字段即可

id int auto_increment primary key not null

Oracle

第一步:建立表

drop table t_role;
create table t_role (
  role_name varchar(255) NOT NULL,
  note varchar(255) NOT NULL,
  id number NOT NULL,
  PRIMARY KEY (id)
);

这里需要注意主键id得是number类型的,如果是int类型将无法触发触发器。

第二步:建立序列

 create sequence role_sequence
 minvalue 1  --最小值
 nomaxvalue  --不设置最大值(由机器决定),或 根据表字段的值范围设置 maxvalue
 maxvalue 99999999  -- 最大值
 start with 1   --从1开始计数,数值可变
 increment by 1  --每次加1,数值可变
 nocycle  --一直累加,不循环
 nocache;  --不建缓冲区。      如果建立cache那么系统将自动读取cache值个seq,这样会加快运行速度;如果在单机中使用cache,或者oracle死了,那么下次读取的seq值将不连贯,所以不建议使用cache。
 create sequence role_sequence
 minvalue 1 
 nomaxvalue  
 start with 1   
 increment by 1  
 nocycle  
 nocache;  

第三步:建立触发器执行

create or replace trigger role_trig 
before
insert on t_role for each row when (new.id is null)
BEGIN
select role_sequence.nextval into :new.id from dual;
END;
/

测试一下:

insert into t_role(note,role_name) values(‘连接‘,‘nihao‘);
insert into t_role(note,role_name) values(‘连接‘,‘nihao‘);
insert into t_role(note,role_name) values(‘连接‘,‘nihao‘);
commit;

建立主键自增表

标签:ber   oracl   缓冲区   acl   com   creat   --   nihao   role   

原文地址:https://www.cnblogs.com/bihanghang/p/9983798.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!