oracle中主键自增

下面用一个例子来说明自增主键的创建:

1、建用户数据表

drop table dectuser;

create table dectuser(

userid integer primary key,  /*主键,自动增加*/

name varchar2(20),

sex varchar2(2)

);2、创建自动增长序列

drop sequence dectuser_tb_seq;

create sequence dectuser_tb_seq minvalue 1 maxvalue 99999999

increment by 1

start with 1;   /*步长为1*/

3、创建触发器

create or replace trigger dectuser_tb_tri

before insert on dectuser     /*触发条件:当向表dectuser执行插入操作时触发此触发器*/

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

begin                                  /*触发器开始*/

select dectuser_tb_seq.nextval into :new.userid from dual;   /*触发器主题内容,即触发后执行的动作,在此是取得序列dectuser_tb_seq的下一个值插入到表dectuser中的userid字段中,注意:new.userid 是new.加上原表的主键*/

end;

/                                        /*退出sqlplus行编辑*/

4、提交

commit;

现在就完成了自增主键的设定,搞定!可以检测一下。

insert into dectuser(name,sex) values ('wang','女');

提示“已创建一行”,表示成功。呵呵:D

方法二:

oracle中创建自增主键

首先,创建一张表

CREATE TABLE example(

ID Number(4) NOT NULL PRIMARY KEY,

NAME VARCHAR(25),

PHONE VARCHAR(10),

ADDRESS VARCHAR(50));

然后,你需要一个自定义的sequence

CREATE SEQUENCE emp_sequence

INCREMENT BY 1 -- 每次加几个

START WITH 1 -- 从1开始计数

NOMAXVALUE -- 不设置最大值

NOCYCLE -- 一直累加,不循环

NOCACHE -- 不建缓冲区

以上代码完成了一个序列(sequence)的建立过程,名称为emp_sequence,范围是从1开始到无限大(无限大的程度是由你机器决定的),nocycle 是决定不循环,如果你设置了最大值那么你可以用cycle 会使seq到最大之后循环.对于nocache顺便说一下如果你给出了cache值那么系统将自动读取你的cache值大小个seq

,这样在反复操作时会加快运行速度,但如果遭遇意外情况如当机了或oracle死了,则下次取出的seq值将和上次的不连贯

书接上文,你只有了表和序列还不够,还需要一个触发器来执行它!代码如下:

CREATE or replace TRIGGER "触发器名称" BEFORE

INSERT ON example FOR EACH ROW WHEN (new.id is null)

begin

select emp_sequence.nextval into: new.id from dual;

end;

插入数据

INSERT INTO example(Name,phone,address) Values('Cao','56498543','Heibei');

=============================================================

ORACLE SEQUENCE的简单介绍(自增长字段)-

转自:http://blog.163.com/liyaodong03436@126/blog/static/83858155200861542646280/

oracle中主键自增的更多相关文章

  1. 关于oracle设置主键自增的问题

    关于orcale设置主键自增的问题 关于主键Oracle中并没有提供一个直接的语句设置,对于这个oralce一般都是用序列和触发器来实现 一下又两种方法来实现 一 ,不使用触发器 创建序列: crea ...

  2. Oracle实现主键自增的几种方式

    数据库作为一个系统的核心,数据库设计的1NF就是一个表结构必须有唯一约束也就是主键,Oracle数据库本身没有自增机制,不像MySQL直接使用关键字AUTO_INCREMENT自动加一,所以需要我们去 ...

  3. Oracle设置主键自增

    oracle没有mysql那样可以有自增主键,需要自己通过创建序列才能实现自增 /*创建自增序列*/ CREATE SEQUENCE CMB_CHINA_CITYS_ID MINVALUE --最小值 ...

  4. MySQL,Oracle建立主键自增表

    MySQL 在建表的时候声明字段即可 id int auto_increment primary key not null Oracle 第一步:建立表 drop table t_role; crea ...

  5. Oracle中主键、外键、索引、序列、唯一性约束的创建

    1.主键的创建 方法一:直接在sql语句中声明字段主键约束 create table table_name (id type[length] constraint pk_name primary ke ...

  6. ORACLE中主键约束跟唯一索引的区别

    分类: DB 2011-12-03 21:34 611人阅读 评论(0) 收藏 举报 oracleconstraintsimmutableusertabledomain 1.  分别用两种方法创建主键 ...

  7. oracle 实现主键自增

    -- 创建表 drop table test; create table test(id number(10), name varchar2(10)); -- 创建对列 drop sequence s ...

  8. oracle实现主键自增

    首先,创建一张表: CREATE TABLE example( ID Number(4) NOT NULL PRIMARY KEY, NAME VARCHAR(25)); 然后,自定义一个序列(seq ...

  9. for循环往Oracle中插入n条数据,主键自增

    1.主键自增实现方法:http://www.cnblogs.com/Donnnnnn/p/5959871.html 2.for循环往Oracle中插入n条数据 BEGIN .. loop insert ...

随机推荐

  1. java了解哪些锁

    问题: 1.Java里的锁了解哪些? 说了Lock和synchronized  它们的使用方式和实现原理有什么区别呢?使用的话,synchronize用于方法和代码块,可以锁对象和类以及方法,Lock ...

  2. u-boot移植(八)---代码修改---存储控制器--MMU

    一.MMU介绍 1.1 虚拟地址与物理地址 建立两个应用程序,hello1.c和hello2.c,然后运行: hello1.c hello2.c 运行结果如下: 可以看到两个结果打印的地址是一样的,都 ...

  3. Linux 下安装 storm

    一:准备工作 (机器部署情况详见)这篇博客 3台安装supervisor,2台安装nimbus (1)安装jdk1.8 (2)安装zookeeper3.4.5 以上两部分安装可查看这篇博客 (3)下载 ...

  4. [C++]埃拉托色尼算法

     /* 埃拉托色尼算法  问题描述:定义一个正整数n,求0-n范围以内的所有质数  @date 2017-03-06 @author Johnny Zen   */  #include<iost ...

  5. OOM之类、对象、实例、实体之辨析

    一.场景再现         有一个重要的概念你需要弄明白,那就是“类(class)”和“对象(object)”的区别.我用禅语来解释一下吧:         鱼和三文鱼有什么区别?         ...

  6. HDU4685 Prince and Princess【强连通】

    题意: 有n个王子和m个公主,每个王子都会喜欢若干个公主,也就是王子只跟自己喜欢的公主结婚,公主就比较悲惨, 跟谁结婚都行.然后输出王子可能的结婚对象,必须保证王子与任意这些对象中的一个结婚,都不会影 ...

  7. 第15月第6天 ios UIScrollView不能响应TouchesBegin

    1. 1:@property MyScrollView *scrollView; 2:给MyScrollView,增加类别:MyScrollView+Touch 3:在类别里实现下面三个方法: @im ...

  8. 【文件】使用jacob将word转换成pdf格式

    使用jacob将word转换成pdf格式   1.需要安装word2007或以上版本,若安装07版本学确保该版本已安装2downbank0204MicrosoftSaveasPDF_ XPS,否则安装 ...

  9. Python的虚拟环境virtualenv

    原文地址:blog.sina.com.cn/s/blog_4ddef8f80101eu0w.html Python的虚拟环境可以使一个Python程序拥有独立的库library和解释器interpre ...

  10. sun.misc.BASE64Encoder等类报错的解决方法

    一.引言: sun.misc.BASE64Encoder等类不属于JDK标准库范畴,但在JDK中包含了该类,可以直接使用.但是在eclipse中直接使用却报错.本文就介绍一下针对这样的类如何处理. 二 ...