• oracle 实现插入自增列(类似SqlServer Identity)


    oracle不像sql 
    server 有关键字identity直接可插入数据时自增 ,Oracle是不能用Identity,可以使用Sequence

    Create Table Tempinfo(
           ids int not null,
           names nvarchar2(50),
           sex varchar(10)
    )
    
    insert into Tempinfo (ids,names,sex) values (1,'Serein',2188);
    insert into Tempinfo (ids,names,sex) values (2,'James',2182);
    
    select * from Tempinfo
    
    --drop table Tempinfo

    实现oracle 自增列第一步,创建一个sequence

    CREATE SEQUENCE Tempinfo_seq 
    
     INCREMENT BY 1 -- 每次加几个 
    
     START WITH 1 -- 从1开始计数 
    
     NOMAXvalue -- 不设置最大值 
    
     NOCYCLE -- 一直累加,不循环  
    
     CACHE 10; --设置缓存cache个序列,如果系统down掉了或者其它情况将会导致序列不连续,也可以设置为---------NOCACHE

    一旦定义了Tempinfo_seq,你就可以用currval,nextval
        currval=返回 sequence的当前值
        nextval=增加sequence的值,然后返回 sequence 值

    比如:
        Tempinfo_seq.CURRVAL
        Tempinfo_seq.NEXTVAL

    第二步,创建一个触发器。

    create or 
    replace trigger userlogin_trigger
    before insert on Tempinfo
    for each 
    row
    begin
          select  Tempinfo_seq.Nextval    into:new.ids from sys.dual 
    ;
    end;

    执行插入查看

    insert into  Tempinfo (names,sex) values ('Terry',2189);

     当然也事不用创建触发器,直接在插入数据时使用sequence就可以了

    insert into Tempinfo (ids,names,sex) values (Tempinfo_seq.Nextval,'Serein',2188);

     可以使用sequence的地方:
        - 不包含子查询、snapshot、view的 select 语句
        - INSERT语句的子查询中
        - NSERT语句的values中
        - UPDATE 的 set中

    删除序列
        简单的Drop Sequence
        Sql代码

      drop sequence Tempinfo_seq;

    参考:  oracle 实现插入自增列   

            Oracle 使用序列创建自增字段

  • 相关阅读:
    分段路由的复兴
    动态维护FDB表项实现VXLAN通信
    neutron dhcp 高可用
    wpf
    从0到1设计一台8bit计算机
    哇塞的Docker——vscode远程连接Docker容器进行项目开发(三)
    中通消息平台 Kafka 顺序消费线程模型的实践与优化
    飞机大战 python小项目
    看透确定性,抛弃确定性
    如何根据普通ip地址获取当前地理位置
  • 原文地址:https://www.cnblogs.com/wangfuyou/p/5941520.html
Copyright © 2020-2023  润新知