时间:2023-10-31来源:系统城装机大师作者:佚名
数据库表名称为:userinfo(不能使用user,user为Oracle关键字)
该种方式要求Oracle版本≥12c
在自增字段后使用以下2种语句的1种:
建表语句:
1 2 3 4 5 |
CREATE TABLE userinfo ( id number(11) generated by default as IDENTITY, --使用自增功能 name varchar2(20) , age number(3) ) |
测试:
1 | INSERT INTO USERINFO ( name ,age) VALUES ( '张三' ,18) |
结果:
该种方式很简单,底层原理其实和下面3种方式相似,只是Oracle帮我们省去了多余的操作。
以下是剩余的3种方式,都用共同的特点(先创建自增序列):
必须先创建自增序列:
1 2 3 4 5 6 7 |
--设置自增序列,名称为"seq_userinfo",名字任意命名 create sequence seq_userinfo increment by 1 --每次+1 start with 1 --从1开始 nomaxvalue --不限最大值 nominvalue --不限最小值 cache 20; --设置取值缓存数为20 |
sequence各个参数详解,可以参考这边文章:
Oracle中sequence(序列)详解
建表语句,设置自增字段默认使用自增序列(推荐该方式):
1 2 3 4 5 6 |
--创建userinfo表 CREATE TABLE userinfo ( id number(11) DEFAULT seq_userinfo.nextval, --"seq_userinfo"为自增序列名称 name varchar2(20) , age number(3) ); |
测试:我使用的是DBeaver软件:
如图:
注意:新增了一条数据,点击保存,该软件并不会立刻自动显示生成的ID,我们需要关闭当前页签,再打开就可以看到自增的ID了
如下:
建表语句:
1 2 3 4 5 6 |
--创建userinfo表 CREATE TABLE userinfo ( id number(11) not null , name varchar2(20) , age number(3) ); |
创建触发器(只需要注意注释的位置):
1 2 3 4 5 6 7 |
--创建触发器,名称为"deptinfo_TRIGGER",名字任意命名 create or replace trigger userinfo_TRIGGER before insert on userinfo --"userinfo"为表名称 for each row begin select seq_userinfo.nextval into :new.id from dual; --1、"seq_userinfo"为自增序列名称 2、这里的id是你需要自增的序列 end userinfo_TRIGGER; --"userinfo_TRIGGER"为触发器名称 |
测试:跟方式1测试一样,会存在不显示ID问题:
如图:
重新打开页签:
如下:
建表语句:
1 2 3 4 5 6 |
--创建userinfo表 CREATE TABLE userinfo ( id number(11) not null , name varchar2(20) , age number(3) ); |
在插入语句中,自增的字段(ID),使用自增序列去代替
如下:
INSERT INTO userinfo(id,name,age) VALUES(seq_userinfo.nextval,'睡竹',18);
注意:方式三与MySQL、微软的SQL server的自增方式是一样的!
运行结果:
对后台系统开发来说:
方式1和方式2最方便
方式3还需要新加一个触发器,不推荐
方式4类似于方式2,但是对Java程序而言,mybatis的xml需要显式的指定触发器,不够友好
附上删除触发器和自增序列的语句:
1 2 3 4 |
--删除自增序列,"seq_userinfo"为自增序列的名称 drop sequence seq_userinfo --删除触发器,"userinfo_TRIGGER"为触发器名称 drop trigger userinfo_TRIGGER |
到此这篇关于Oracle实现主键字段自增的四种方式的文章就介绍到这了
2023-10-31
Oracle如何编写一个sqlldr实例2023-10-31
Oracle的SQLLDR用法简介2023-10-31
Oracle中的高效SQL编写PARALLEL解析1.Oracle数据库系统结构概述 2.Oracle数据库存储结构 物理存储结构 控制文件 数据文件 重做日志文件 归档日志文件 Oracle数据库逻辑结构 数据块(Data Block) (盘)区(Extent) 段(Segment) 表空间(Tablespace) 本地管...
2023-10-31
windows下的Oracle19c 一、官网下载Oracle19c数据库 二、安装Oracle数据库 1.解压安装包 2.运行setup.exe安装 三、配置 四、安装完Oracle数据库,给scott用户解锁 1.解决Oracle数据库中没有scott账户的问题 2.给scott...
2023-10-31