精华内容
下载资源
问答
  • oracle创建自增序列

    千次阅读 2019-11-15 21:45:14
    Oracle中,当需要建立一个自增字段时,需要用到sequence。sequence也可以在mysql中使用,但是有些差别,日后再补充,先把oracle中sequence的基本使用总结一下,方便日后查阅。 在oracle中sequence就是序号,每次取...

     Oracle中,当需要建立一个自增字段时,需要用到sequence。sequence也可以在mysql中使用,但是有些差别,日后再补充,先把oracle中sequence的基本使用总结一下,方便日后查阅。

    在oracle中sequence就是序号,每次取的时候它会自动增加。sequence与表没有关系。

     

    1. Create Sequence

        首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限。

        创建语句如下:

    CREATE SEQUENCE seqTest

    INCREMENT BY 1 -- 每次加几个

    START WITH 1 -- 从1开始计数

    NOMAXvalue -- 不设置最大值

    NOCYCLE -- 一直累加,不循环

    CACHE 10; --设置缓存cache个序列,如果系统down掉了或者其它情况将会导致序列不连续,也可以设置为---------NOCACHE

     

    说明:

     minvalue:序列最小值

     maxvalue/nomaxvalue:序列最大值/没有最大值

     start with 1:序列从1开始

     increment by 1:每次增加1

     cache/nocache:nocache不缓存。cache缓存。开启缓存,效率高,只是如果数据库宕机了,缓存丢失,会出现序列跳号情况。

     

    2.查看已有sequence:

    select * from user_sequences; 

    Select * from all_sequences;

    3.得到Sequence值

    两种方式

    ① select last_number from user_sequences where sequence_name='SEQ_ON_USER';  

    ② select SEQ_ON_USER.nextval from sys.dual;  

     

    定义好sequence后,你就可以用currVal,nextVal取得值。

        CurrVal:返回 sequence的当前值

        NextVal:增加sequence的值,然后返回 增加后sequence值

      得到值语句如下:

    SELECT Sequence名称.CurrVal FROM DUAL;

      如得到上边创建Sequence值的语句为:

    select seqtest.currval from dual

     

    在Sql语句中可以使用sequence的地方:

        - 不包含子查询、snapshot、VIEW的 SELECT 语句

        - INSERT语句的子查询中

        - INSERT语句的values中

        - UPDATE 的 SET中

     

    如在插入语句中

    insert into 表名(id,name)values(seqtest.Nextval,'sequence 插入测试');

     

     注:

        - 第一次NEXTVAL返回的是初始值;随后的NEXTVAL会自动增加你定义的INCREMENT BY值,然后返回增加后的值。

          CURRVAL 总是返回当前SEQUENCE的值,但是在第一次NEXTVAL初始化之后才能使用CURRVAL,否则会出错。

           一次NEXTVAL会增加一次 SEQUENCE的值,所以如果你在同一个语句里面使用多个NEXTVAL,其值就是不一样的。

        - 如果指定CACHE值,ORACLE就可以预先在内存里面放置一些sequence,这样存取的快些。cache里面的取完后,oracle自动再取一组 到cache。 使用cache或许会跳号, 比如数据库突然不正常down掉(shutdown abort),cache中的sequence就会丢失. 所以可以在create sequence的时候用nocache防止这种情况。

     

    4.Alter Sequence

        拥有ALTER ANY SEQUENCE 权限才能改动sequence. 可以alter除start至以外的所有sequence参数.如果想要改变start值,必须 drop sequence 再 re-create。

    例:

    alter sequence SEQTEST maxvalue 9999999;

        另: SEQUENCE_CACHE_ENTRIES参数,设置能同时被cache的sequence数目。

     

    5.Drop Sequence

    DROP SEQUENCE seqTest;

    6. 一个例子

    create sequence SEQ_ID

    minvalue 1

    maxvalue 99999999

    start with 1

    increment by 1

    nocache

    order;

     

    建解发器代码为:

    create or replace trigger tri_test_id

      before insert on S_Depart   --S_Depart 是表名

      for each row

    declare

      nextid number;

    begin

      IF :new.DepartId IS NULLor :new.DepartId=0 THEN --DepartId是列名

        select SEQ_ID.nextval --SEQ_ID正是刚才创建的

        into nextid

        from sys.dual;

        :new.DepartId:=nextid;

      end if;

    end tri_test_id;

     

    上面的代码就可以实现自动递增的功能了。

    或者

    1. create or replace trigger "SEQ_ON_USER_GENERATOR" before  
    2. insert on databasename1.T_USER for each row  
    3. declare  
    4. mid number,  
    5. begin  
    6. select SEQ_ON_USER.nextval into mid from dual;  
    7. :new.id:=mid;  
    8. end   
    9. create trigger SEQ_ON_USER_Trigger   
    10. before insert on T_USER for each row   
    11. begin   
    12. select SEQ_ON_USER.nextval into :new.id from dual;   
    13. end SEQ_ON_USER_Trigger;   

     

    展开全文
  • oracle 创建自增序列

    万次阅读 2018-07-19 08:58:20
    create sequence seq_sys_user minvalue 1 maxvalue 999999999999999999 start with 1 increment by 1 nocache--创建序列 INSERT INTO SYS_USER(id,user_name,password)VALUES(seq_sys_user.NEXTVAL,1,11);--自增...

    create sequence seq_sys_user minvalue 1 maxvalue 999999999999999999 start with 1 increment by 1 nocache--创建序列

    INSERT INTO SYS_USER(id,user_name,password)VALUES(seq_sys_user.NEXTVAL,1,11);--自增插入测试

    SELECT * FROM SYS_USER;

    select * from user_sequences;--查询所有已经建好的序列

     

    select seq_sys_user.NEXTVAL from dual; --查询seq_sys_user SYS_USER 的下一个序列


    DROP SEQUENCE seq_sys_user;--删除序列

    展开全文
  • 创建自增序列 create sequence APP_SEQ minvalue 1 maxvalue 999999 start with 1 increment by 1 nocache; 创建触发器 create or replace trigger APP_TRI before insert on MMC_APP_BASE_INFO for each...
    创建自增序列
    create sequence APP_SEQ
    minvalue 1
    maxvalue 999999
    start with 1
    increment by 1
    nocache;
     
    创建触发器
    create or replace trigger APP_TRI
    before insert on MMC_APP_BASE_INFO for each row
    begin
    select APP_SEQ.nextval into :new.appno from dual;
    end;

    转载于:https://www.cnblogs.com/cutone/p/10897936.html

    展开全文
  • oracle创建自增序列 创建表 Create Table shorttimeTableName--表名 ( id number not null, vc_name varchar2(32), vc_childnode varchar2(32), vc_quota_cpu varchar2(32), vc_quota_memory varchar2(32), ...

    oracle创建自增序列

    创建表

     Create Table shorttimeTableName--表名
            (
            id number not null,
            vc_name varchar2(32),
            vc_childnode varchar2(32),
            vc_quota_cpu varchar2(32),
            vc_quota_memory varchar2(32),
            vc_quota_space varchar2(32),
            vc_avg_cpu varchar2(32),
            vc_avg_memory varchar2(32),
            vc_avg_space varchar2(32)
            );
    

    创建自增长序列
    语法create sequence shorttimeTableName(表名)_id(你想要的自增序列)_seq;

    create sequence shorttimeTableName_id_seq;
    

    向表中添加数据

    insert into shorttimeTableName(
            id,
            vc_name,
            vc_childnode,
            vc_quota_cpu,
            vc_quota_memory,
            vc_quota_space,
            vc_avg_cpu,
            vc_avg_memory,
            vc_avg_space) 
    select shorttimeTableName_id_seq.nextval,'集群',0,a.CPU,a.mem,b.spa,c.vcoreavg,d.memoryavg,e.spaceavg
          from

    语法:shorttimeTableName_id_seq.nextval

    展开全文
  • Oracle 创建自增序列

    2018-03-20 20:24:00
    -- Create sequence create sequence ID_SEQUENCEminvalue 1maxvalue 9999999999999999999999999999start with 100001increment by 1cache 1000;insert into 表名 values(ID_SEQUENCE.Nextval,'**','PICC0100001');...
  • 假设存在一个表 SYS_DEPT,ID字段是主键,要求实现自增创建自增序列create sequence SYS_DEPT_ID_SEQminvalue 1start with 1increment by 1nocache;查询用户所有的序列:select SEQUENCE_OWNER,SEQUENCE_NAME from ...
  • 给大家分享MyBatis Oracle 自增序列的实现方法及mybatis配置oracle的主键自增长的方法,非常不错具有一定的参考借鉴价值,感兴趣的朋友一起看看吧
  • Oracle使用序列创建自增字段,自增长列。
  • 1.创建表create table my_table (id number(10) constraint pk_id primary key,name varchar2(20) not null,phone_Number varchar2(20) constraint unique_phone_number unique,email_Address varchar2(200) ...
  • Oracle中如何创建使用SEQUENCESOracle提供了sequence对象,由系统提供自增长的序列号,通常用于生成数据库数据记录的自增长主键或序号的地方.下面介绍一下关于sequence 的生成,修改,删除等常用的操作:1. 创建Sequence...
  • 这里写自定义目录标题oracle自增序列及其触发器创建序列创建触发器序列的查询更改删除引用资源 oracle自增序列及其触发器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown...
  • 今天从oracle迁移数据到mysql碰到个需求:原先的主键字段需要改成mysql中的自增字段,而且原先数据的值不能变,以后新插入的值从原先数据最大的值开始自增。 解决办法: 构建环境: mysql> CREATE TABLE test -> ( ...
  • ORACLE 创建自增序列生成流水号

    千次阅读 2015-11-25 11:34:41
    CREATE SEQUENCE SEQ_JK_JKPZDY INCREMENT BY 1 START WITH 1 MAXVALUE 99999999 CYCLE CACHE 10; select gswt.SEQ_JK_JKPZDY.nextval SN from dual;
  • //获得session方法 public voidgetCurrentSession(){//调用HibernateSessionFactory的getSession方法创建Session对象 session =HibernateSessionFactory.getSession(); }//关闭sesson方法 public voidcloseSession()...
  • 那如何实现Oracle的主键自增呢,这里我们记录一种最常用的方式:sequence + trigger。 就是利用Oralce的序号和触发器来实现字段的自增,下面直接来看一个完整的例子。 一、创建表结构 这里我们简单创建一张表...
  • oracle创建自增字段

    千次阅读 2017-06-06 14:25:17
    oracle中,实现字段数值的自动增长
  • Oracle自增序列

    2020-11-01 18:46:36
    一个序列的值是由特别的Oracle程序自动生成,因而序列避免了在运用层实现序列而引起的性能瓶颈。 SQL如下(示例): CREATE sequence seq_tableName increment BY 1 START WITH 1 MAXVALUE 99999999 minvalue 1 ...
  • Oracle主键自增序列

    2018-12-28 15:21:00
    2019独角兽企业重金招聘Python工程师标准>>> CREATE SEQUENCE CMPO_PUSH_SEQ...建Oracle主键自增序列,没错插入自增1   转载于:https://my.oschina.net/u/3829307/blog/2994713
  • oracle 实现自增序列

    2017-08-26 11:09:51
    一 丶新建一个表: CREATE TABLE example( ID Number(4) NOT NULL PRIMARY KEY, NAME VARCHAR...二 丶建一个序列: CREATE SEQUENCE example_sequence INCREMENT BY 1 -- 每次加几个 START WITH 1 -- 从1开始计数 NOMAX
  • 如果没有表可以先创建个表Sql代码. ###建表###2.3. CREATE TABLE "NWVIDEO"."DEVICE"4. (5. "DID" NUMBER NOT NULL,6. "TYPE" NUMBER(3) NOT NULL,7. "BODY" VARCHAR2(100) NOT NULL,8. "HITS" NUMBER(10) ...
  • 之前一直用mysql开发网站,最近换掉工作,碰到了oracle,发现了好多问题,oracle主键不支持自增。。搜了一下才发现要但是通过触发器(trigger)和序列(sequence)可以实现。一新建一个测试表-- Create tablecreate ...
  • ORACLE自增序列

    千次阅读 2020-04-30 20:40:28
    今天正式环境新增数据异常,排查后是oracle主键id已存在。...1.删除自增序列 DROP SEQUENCE SEQ_TT_SECNET_MAINTAIN_INFO 一般命名为SEQ_表名。 2.重新定义自增序列 create sequence SEQ_TT_SECNET_MAINTAIN...
  • Oracle 序列自增 ID

    2021-02-02 19:32:12
    oracle 的组件是不能如 mysql 一样设置 autoincrement 的自增条件的,因此使用序列和触发器操作是主键自增-- 创建序列create sequence t_comb_match_info_seq start with 1 increment by 1;--创建触发器create or ...
  • 下面是对Oracle表中一个字段建立自增序列的例子与说明,希望对大家有所帮助。/*==============================================================*//* 设置自增序列: 年度作业计划执行对象表 *//*==================...
  • Oracle创建自增序列

    2016-03-17 18:01:00
    Oracle没有自增字段这样的功能,但是通过触发器(trigger)和序列(sequence)可以实现。 先建一个测试表了: create table userlogin( id number(6) not null, name varchar2(30) not null primary key ) ...
  • 一个序列的值是由特别的Oracle程序自动生成,因而序列避免了在运用层实现序列而引起的性能瓶颈。Oracle序列允许同时生成多个序列号,而每一个序列号是唯一的。 当一个序列号生成时,序列是递增,独立于事务的提交或...
  • 序列: 是oacle提供的用于产生一系列唯一数字的数据库对象。...首先创建序列Oracle序列的语法格式为:CREATE SEQUENCE 序列名[INCREMENT BY n][START WITH n][{MAXVALUE/ MINVALUEn|NOMAXVALUE}][{CYCLE|NOCYCLE}...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,656
精华内容 5,062
关键字:

oracle创建自增序列