oracle中主键自增

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/

posted @ 2013-06-17 17:12  君子笑而不语  阅读(210)  评论(0编辑  收藏  举报