Oracle建表设置主键自增实现MySQL中的autu_increment
2017-08-21 13:40
639 查看
在新项目中接触到了Oracle数据库,和MySQL不同,Oracle没有自增的选项,在创建MySQL时只要auto_increment就可以实现的自增或者是使用自增函数,在Oracle中不适用,自己找了写资料总结如下:
Oracle中没有自增的选项,但在Oracle中出现了新的定义序列[数学上,序列是被排成一列的对象(或事件);这样每个元素不是在其他元素之前,就是在其他元素之后。这里,元素之间的顺序非常重要。]
发现很多用Oracle的人都不会像使用mysql那样,添加语句不写id,因为自增的MySQL会自动添加新的id。
接手项目发现:
这里的seq_admin_info.nextval就是序列 序列名为seq_admin_info 其中nextval是获取序列存在最大的下个数字。
到了重头戏,如何添加序列:
创建和MySQL相同的自增样式:
因为使用上的不通过,所以猜想能否实现和MySQL相同的自增形式,最终得到如下方式:
Tip:同比上面的序列,下面的自动增长可以在insert语句中不添加自增的字段,底层原理还是使用的序列。
创建表
然后,你需要一个自定义的sequence
你只有了表和序列还不够,还需要一个触发器来执行它!
插入数据
查询表中数据
得到结果为id自动增长。
Oracle中没有自增的选项,但在Oracle中出现了新的定义序列[数学上,序列是被排成一列的对象(或事件);这样每个元素不是在其他元素之前,就是在其他元素之后。这里,元素之间的顺序非常重要。]
发现很多用Oracle的人都不会像使用mysql那样,添加语句不写id,因为自增的MySQL会自动添加新的id。
接手项目发现:
insert into admin_info(id,admin_name,admin_realname,admin_pass,status,enterPriseNo)values (seq_admin_info.nextval,#{admin_name},#{admin_realname},#{admin_pass},#{status},#{enterPriseNo})
这里的seq_admin_info.nextval就是序列 序列名为seq_admin_info 其中nextval是获取序列存在最大的下个数字。
到了重头戏,如何添加序列:
--添加序列 create sequence seq_backstage_cartes --添加序列名称(一般约定为:'seq_'加数据表的名称) increment by 1 -- 每次加几个 start with 1 -- 从1开始计数 maxvalue 999999999 -- 最大值
创建和MySQL相同的自增样式:
因为使用上的不通过,所以猜想能否实现和MySQL相同的自增形式,最终得到如下方式:
Tip:同比上面的序列,下面的自动增长可以在insert语句中不添加自增的字段,底层原理还是使用的序列。
创建表
create table member( memberId number primary key, memberMail varchar2(20)not null, memberName varchar2(20) not null, memberPassword varchar2(20) );
然后,你需要一个自定义的sequence
CREATE SEQUENCE emp_sequence INCREMENT BY 1 -- 每次加几个 START WITH 1 -- 从1开始计数 NOMAXVALUE -- 不设置最大值 NOCYCLE -- 一直累加,不循环 NOCACHE -- 不建缓冲区
你只有了表和序列还不够,还需要一个触发器来执行它!
create trigger mem_trig before insert on member for each row when (new.memberId is null) begin select emp_sequence.nextval into:new.memberId from dual; end;
插入数据
insert into member(memberMail,memberName,memberPassword) values('123@qq.com','jack','123456');
查询表中数据
select * from member;
得到结果为id自动增长。
相关文章推荐
- mysql,sql server,Oracle主键自动增长的设置
- Mysql,SqlServer,Oracle主键自动增长的设置
- oracle怎么实现id自增和设置主键
- [转]mysql如何设置主键和外键,实现级联更新、级联删除
- Mysql,SqlServer,Oracle主键自动增长的设置
- mysql实现插入一条记录时候还回主键值,表的主键是自增长方式AUTO_INCREMENT
- Mysql,SqlServer,Oracle主键自动增长的设置
- Mysql,SqlServer,Oracle主键自动增长的设置
- Mysql,SqlServer,Oracle主键自动增长的设置
- Mysql,SqlServer,Oracle主键自动增长的设置
- oracle怎么实现id自增和设置主键
- mysql如何设置主键和外键,实现级联更新、级联删除
- Mysql,SqlServer,Oracle主键自动增长的设置
- Mysql,SqlServer,Oracle主键自动增长的设置
- Mysql,SqlServer,Oracle主键自动增长的设置
- Mysql,SqlServer,Oracle,sqlite 主键自动增长的设置
- 深入Mysql,SqlServer,Oracle主键自动增长的设置详解
- Mysql,SqlServer,Oracle主键自动增长的设置
- Oracle实现主键自增auto_increment
- oracle怎么实现id自增和设置主键