建立主键自增表

Posted bihanghang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了建立主键自增表相关的知识,希望对你有一定的参考价值。

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;

以上是关于建立主键自增表的主要内容,如果未能解决你的问题,请参考以下文章

使用jpa在postgresql数据库中创建主键自增表

postgresql 主键自增,以及mybaits 逆向生成

mysql的设置主键自增的问题

Django 主键自增

oracle数据库建立序列使用序列实现主键自增

怎么设置主键自增