zoukankan      html  css  js  c++  java
  • 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的简单介绍(自增长字段)-

  • 相关阅读:
    mysql 数据迁移方案
    tomcat:run 指定端口号
    idea open gradle project
    tomcat:run命令执行端口号
    域名代理
    stackoverflow慢问题
    chrome 添加 vue tools
    深度学习——结构化机器学习项目(学习策略2)[9]
    深度学习——超参数调试[7]
    深度学习——优化算法[6]
  • 原文地址:https://www.cnblogs.com/zhoushengbing/p/3253089.html
Copyright © 2011-2022 走看看