在数据库中实现主键自动增长有利于我们做数据插入操作,在SQL SERVER上创建表时可以在int类型的字段后加上identity(1,1),该字段就会从1开始,按照+1的方式自增,将这个字段设置为主键。MySql中可以使用“auto_increment”即可。而oralce实现该效果需要使用序列配合触发器使用。

下面是一个具体实例:

1.创建数据库表:

create table employee

(

  EID      INTEGER,

  NAME     varchar2(10),

  SURNAME  varchar2(10),

  GENDER   varchar2(10),

  STATE    varchar2(10),

  BIRTHDAY date,

  HIREDATE date,

  DEPT     varchar2(10),

  SQLARY   INTEGER

)

;

2.创建序列:

create sequence EID_AUTOINC

minvalue 1

maxvalue 9999

start with 57

increment by 1

nocache;

3.创建触发器:

CREATE OR REPLACE TRIGGER employee_EID --触发器名称

  BEFORE INSERT ON employee    --EMPLOYEE是表名

  FOR EACH ROW

DECLARE

   NEXTID NUMBER;

BEGIN

  IF :NEW.EID IS NULL OR :NEW.EID=0 THEN --EID是列名

    SELECT EID_AUTOINC.nextval --EID_AUTOINC是刚才创建的序列

    INTO NEXTID

    FROM DUAL;

     :NEW.EID:=NEXTID;

  END IF;

END employee_EID;

4.插入数据测试:

insert into employee

  ( name, surname, gender, state, birthday, hiredate, dept, sqlary)

values

  ( 'm', 'f', 'f', 'QQHE', to_date('1986-08-01','yyyy-mm-dd'), to_date('2010/08/24','yyyy-mm-dd'), 'C-center', '3500');

5.查询验证:

select * from employee

更新oracle数据库表如何实现主键自增长的更多相关文章

  1. 插入Oracle数据库后返回当前主键id

    最近做一个spring版本3.0.4的老项目功能,应用场景要用到插入oracle表后返回主键ID拿来和其他表关联. 用oralce的可以一直用这种处理方式,高兼容低,搜索网上的资料都不能和这个Spri ...

  2. Oracle创建表(包含、主键自增)

    注意:Oracle导出建表语句不会导出触发器及自增索引 第一步:创建一张表 create table member( memberId number primary key, --主键.自增长 mem ...

  3. oracle建表 和 设置主键自增

    1.新建table CREATE TABLE ysb_log( id ) primary key not null , tbdate ) NULL, tb_time ) NOT NULL, tblog ...

  4. Oracle 创建表并设置主键自增

    创建数据库 CREATE TABLE STUDENT(ID NUMBER PRIMARY KEY, NAME VARCHAR(200) NOT NULL, SEX VARCHAR(200), CREA ...

  5. mybatis使用注解往postgresql数据库表insert数据[主键自增]的写法

    建表SQL: DROP TABLE IF EXISTS person; CREATE TABLE person( person_id serial PRIMARY KEY NOT NULL, pers ...

  6. Oracle数据库作业-2 添加主键 外键

    一.在表student中添加主键sno

  7. oracle建表,设置主键,修改属性等

    --建表 create table book( book_id number(10), book_name varchar2(20), book_price number(10,2), book_au ...

  8. Oracle - 使用序列+触发器实现主键自增长

    Oracle中的自增,不如Sql server那般方便. --.创建序列 CREATE SEQUENCE "TABLE_NAME"."SQ_NAME" MINV ...

  9. mybatis+oracle 完成插入数据库,并将主键返回的注意事项

    mybatis+oracle 完成插入数据库,并将主键返回的注意事项一条插入语句就踩了不少的坑,首先我的建表语句是: create table t_openapi_batch_info( BATCH_ ...

随机推荐

  1. 漫谈NIO(3)之Netty实现

    1.前言 上一章结合Java的NIO例子,讲解了多路IO复用的一个基本使用方法,通过实际编码加深对其理解.本章开始进入Netty的环节,前面两章都是为了Netty进行铺垫说明.此节将对比Java的NI ...

  2. 探索DatePicker新用法

    很少用DatePicker,项目需要用到DatePicker,再用时发现跟以前有些变化,重新简单梳理一下DatePicker的用法. 先上效果图: 首先是xml文件的用法: 以前是用android:s ...

  3. 如何用 纯C++(ndk)开发安卓应用 ?

    视频教程请关注 http://edu.csdn.net/lecturer/lecturer_detail?lecturer_id=440 如何安装安卓的开发环境以及怎么设置ndk的环境变量等在前边的文 ...

  4. linux安装tmux

    由于tmux依赖于libevent和ncurses-devel,所以应首先有这两个库,和相关的头文件. 1.对于ncurses-devel,可用yum安装. yum install ncurses-d ...

  5. Go 编译和runtime

    一篇题为:Analysis of the Go runtime scheduler 的论文,其中部分章节介绍到了Go runtime. 先上图,这张图描述了Go语言程序,Runtime和操作系统之间的 ...

  6. redis-集群创建脚本

    之前建好了redis集群, 但没有找到集群重启的机制, 停电2次, 重新创建太麻烦, 于是写了个脚本辅助启动 redis的创建过程可以看: http://www.cnblogs.com/wenbron ...

  7. C#直接用数字定义背景颜色

    如下: tableLayoutPanel.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte ...

  8. ruby中nil?, empty? and blank?的选择

    In Ruby, you check with nil? if an object is nil: article = nil article.nil? # => true empty? che ...

  9. Python解析xml与JSON

    xml与json是常用的文件交换格式,常用来表示网页的html则是xml的变种.解析xml和json在web开发中有着重要应用. DOM解析XML 文件对象模型(Document Object Mod ...

  10. mysql和SQLAlchemy

    mysql和SQLAlchemy 一.MySQL分组查询 1.1 MySQL对数据表进行分组查询(GROUP BY) 1.GROUP BY基本语法格式: GROUP BY关键字可以将查询结果按照某个字 ...