博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
oracle 实现插入自增列(类似SqlServer Identity)
阅读量:6325 次
发布时间:2019-06-22

本文共 1221 字,大约阅读时间需要 4 分钟。

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_triggerbefore insert on Tempinfofor each rowbegin      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;

 

 

参考:     

        

转载地址:http://bdmaa.baihongyu.com/

你可能感兴趣的文章
BZOJ 3532: [Sdoi2014]Lis (最大流)
查看>>
Dundas 系列
查看>>
Windows的命令行查看,修改,删除,添加环境变量
查看>>
iOS 图文混排
查看>>
Vue2 第四天学习(Vue的生命周期)
查看>>
1长数组使用
查看>>
GC是什么? 为什么要有GC?
查看>>
数字积分
查看>>
redis 3.0.1 在CentOS上的安装
查看>>
silverlight:如何在后端代码中控制Behaviors
查看>>
TCP/IP三次握手和HTTP过程
查看>>
JQuery EasyUi之界面设计——母版页以及Ajax的通用处理(三)
查看>>
童年记忆
查看>>
Selenium Python bindings 文档一
查看>>
directX的16位和24位的色彩模式
查看>>
WINDOWS 8
查看>>
ASP.NET MVC涉及到的5个同步与异步,你是否傻傻分不清楚?[下篇]
查看>>
poj3231
查看>>
spring(10)
查看>>
Ubuntu 12.04 LTS 及ubuntu14.10 -- NFS安装
查看>>