oracle数据库表实现自增主键的方法实例

目录
  • 一、前言
  • 二、实现主键自动增长
    • 1、创建表格
    • 2、创建自增序列
    • 3、创建触发器
    • 4、测试新增语句
  • 总结

一、前言

几天建表需要用到自增主键,于是使用序列(sequence)和触发器(trigger)来实现主键自增,在网上查了一些知识,顺便记录下;

二、实现主键自动增长

1、创建表格

 CREATE TABLE "APP_COMM_T"
   (
    "ID" NUMBER,
    "BASE_KEY" VARCHAR2(50 BYTE),
    "BASE_NAME" VARCHAR2(100 BYTE),
    "BASE_DESC" VARCHAR2(50 BYTE),
    "BASE_TYPE" VARCHAR2(10 BYTE),
    "BASE_SON" VARCHAR2(1 BYTE),
     CONSTRAINT "APP_COMM_T_PK" PRIMARY KEY ("ID")
   )

注:必须标明ID为主键

2、创建自增序列

create sequence SEQ_APP_COMM_T
 minvalue 1
 maxvalue 999999
 increment by 1
 start with 1;

创建序列参数格式描述:

CREATE SEQUENCE SEQNAME //序列名字

MINVALUE 1 //最小值;设置NOMINVALUE表示无最大值

MAXVALUE 1.0E20 //最大值;设置NOMAXVALUE表示无最大值

INCREMENT BY 1 //每次自增1, 也可写非0的任何整数,表示自增,或自减

START WITH 1 //以该值开始自增或自减

3、创建触发器

 create trigger TRIG_APP_COMM_T
before insert on APP_COMM_T
for each row
begin
select SEQ_APP_COMM_T.nextval into :new.id from dual;
end;

创建触发器描述:

before insert on APP_COMM_T

/*触发条件:当表APP_COMM_T执行插入操作时触发此触发器*/

for each row   /*对每一行都检测是否触发*/

begin       
/*触发后执行的动作,在此是取得序列SEQ_APP_COMM_T的下一个值插入到表APP_COMM_T中的id字段中*/

4、测试新增语句

已实现自增无需添加主键id

INSERT INTO APP_COMM_T (BASE_KEY,BASE_NAME,BASE_DESC,BASE_TYPE,BASE_SON)
VALUES('B', 'ADMIN','賬號類型','AccountType','N');

总结

到此这篇关于oracle数据库表实现自增主键的文章就介绍到这了,更多相关oracle数据库表自增主键内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Oracle创建主键自增表(sql语句实现)及触发器应用

    1.创建表 复制代码 代码如下: createtableTest_Increase( useridnumber(10)NOTNULLprimarykey,/*主键,自动增加*/ usernamevarchar2(20) ); 2.创建自动增长序列 复制代码 代码如下: CREATESEQUENCETestIncrease_Sequence INCREMENTBY1--每次加几个 STARTWITH1--从1开始计数 NOMAXVALUE--不设置最大值,设置最大值:maxvalue9999 NO

  • Oracle 创建主键自增表示例代码

    前言 本篇文章给大家主要介绍的是在oracle中如果创建自增长表的方法,这里要用到序列.下面话不多说,我们来看示例代码. 示例代码 create table tb_student ( id NUMBER(10) not null, createtime DATE not null, constraint PK_tb_student primary key (id) ); comment on table "tb_student" is '学生表'; comment on column

  • Oracle数据库中创建自增主键的实例教程

    在设计数据库表的时候发现Oracle没有自增主键的设置,Google了解到Oracle本身并不支持自增主键,需要通过序列(Sequence)和触发器(Trigger)实现. 创建表Student Create Table Student( id number(12) primary key, --通过序列和触发器实现id的自增 name varchar2(20) , age number(3) , sex number(1) ) 创建序列Sequence Create Sequence SEQ_

  • oracle数据库表实现自增主键的方法实例

    目录 一.前言 二.实现主键自动增长 1.创建表格 2.创建自增序列 3.创建触发器 4.测试新增语句 总结 一.前言 几天建表需要用到自增主键,于是使用序列(sequence)和触发器(trigger)来实现主键自增,在网上查了一些知识,顺便记录下: 二.实现主键自动增长 1.创建表格 CREATE TABLE "APP_COMM_T" ( "ID" NUMBER, "BASE_KEY" VARCHAR2(50 BYTE), "BAS

  • Mybatis使用useGeneratedKeys获取自增主键的方法

    摘要 我们经常使用useGenerateKeys来返回自增主键,避免多一次查询.也会经常使用on duplicate key update,来进行insertOrUpdate,来避免先query 在insert/update.用起来很爽,但是经常踩坑,还不知为何.本篇就是深入分析获取自增主键的原理. 问题 首先摘两段我司一些老代码的bug 批量插入用户收藏 for (tries = 0; tries < MAX_RETRY; tries++) { final int result = colle

  • 详解mybatis插入数据后返回自增主键ID的问题

    1.场景介绍: ​开发过程中我们经常性的会用到许多的中间表,用于数据之间的对应和关联.这个时候我们关联最多的就是ID,我们在一张表中插入数据后级联增加到关联表中.我们熟知的mybatis在插入数据后返回的是插入成功的条数,那么这个时候我们想要得到相应的这条新增数据的ID,该怎么办呢? 2.插入数据返回自增主键ID方法(一) 在映射器中配置获取记录主键值xml映射: 在xml中定义useGeneratedKeys为true,返回主键id的值,keyProperty和keyColumn分别代表数据库

  • MyBatis插入时获取自增主键方法

    MyBatis 3.2.6插入时候获取自增主键方法有两种.下面以以MySQL5.5为例通过两种方法给大家介绍mybatis获取自增主键的方法,一起看看吧. 以MySQL5.5为例: 方法1: <insert id="insert" parameterType="Person" useGeneratedKeys="true" keyProperty="id"> insert into person(name,pswd

  • Mybatis高级映射、动态SQL及获得自增主键的解析

    MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis .下文给大家介绍Mybatis高级映射.动态SQL及获得自增主键的内容,具体详情请参考本文. 一.动态SQL 相信大家在用mybatis操作数据库时时都会碰到一个问题,假如现在我们有一个关于作者的list authorList,需要根据authorList里已有的作者信息在数据库中查询相应作者的博客信息.

  • MySQL8新特性:自增主键的持久化详解

    前言 自增主键没有持久化是个比较早的bug,这点从其在官方bug网站的id号也可看出(https://bugs.mysql.com/bug.php?id=199).由Peter Zaitsev(现Percona CEO)于2003年提出.历史悠久且臭名昭著. 首先,直观的重现下. mysql> create table t1(id int auto_increment primary key); Query OK, 0 rows affected (0.01 sec) mysql> inser

  • Mybatis插入时返回自增主键方式(selectKey和useGeneratedKeys)

    目录 Mybatis插入时返回自增主键 Mybatis批量插入返回自增主键 解决办法 Mybatis插入时返回自增主键 通过selectKey在插入操作前或者操作后获取key值,做为字段插入或返回字段.(此段代码获取的序列值id作为字段值插入到实体类中返回) <insert id="insert"> <selectKey keyProperty="id" resultType="int" order="AFTER&qu

  • Oracle判断表、列、主键是否存在的方法

    在编写程序时,数据库结构会经常变化,所以经常需要编写一些数据库脚本,编写完成后需发往现场执行,如果已经存在或者重复执行,有些脚本会报错,所以需要判断其是否存在,现在我就把经常用到的一些判断方法和大家分享下: 一.判断Oracle表是否存在的方法 declare tableExistedCount number; --声明变量存储要查询的表是否存在 begin select count(1) into tableExistedCount from user_tables t where t.tab

  • 使用prometheus统计MySQL自增主键的剩余可用百分比

    最近生产环境一套数据库因为疯狂写日志数据,造成主键值溢出的情况出现,因此有必要将这个指标监控起来. mysqld_exporter自带的这个功能,下面是我使用的启动参数: nohup ./mysqld_exporter --config.my-cnf="./my.cnf" --web.listen-address=":9104" --collect.heartbeat --collect.auto_increment.columns --collect.binlog

随机推荐