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 实现插入自增列(类似SqlServer Identity)的更多相关文章
- [转]oracle 实现插入自增列
本文转自:http://blog.csdn.net/love_zt_love/article/details/7911104 刚使用oracle,它和sql server 好多地方还是有所不同的,简单 ...
- Oracle 12c的自增列Identity Columns
在Oracle的12c版本中,Oracle实现了类似MySQL中的auto_increment的自增列,下面我们看一起Oracle是怎么实现的. Oracle Database 12c Enterpr ...
- ORACLE表建立自增列
create tablespace studentDBdatafile 'E:\datafiles_1.dbf' size 10m; create user Huang_Ying_Boidentifi ...
- Sql Insert into select 创建临时表插入自增列
] GO ============================================= -- Author: PPL -- Create date: 2015-11-23 -- Desc ...
- Oracle自增列
一.介绍: 在设计数据库时,有时候希望表的某一列为自增列,例如编号,本文就介绍如何在oracle数据库中实现自增列,需要两个步骤: 1)构建序列(sequence) 在oracle中sequence就 ...
- Oracle自增列创建方法
最近在做Oracle的项目,由于以前没有接触过Oracle的开发,遇到了不少的问题,比如给Oracle表添加自增列,与SQL Server就不同. Oracle没有自增字段这样的功能,但是通过触发器( ...
- 重置SQLSERVER表的自增列,让自增列重新计数
SQL的自增列挺好用,只是开发过程中一旦删除数据,标识列就不连续了 写起来 也很郁闷,所以查阅了一下标识列重置的方法 发现可以分为三种: --- 删除原表数据,并重置自增列truncate table ...
- SQL的自增列重置的方法
SQL的自增列挺好用,只是开发过程中一旦删除数据,标识列就不连续了 写起来 也很郁闷,所以查阅了一下标识列重置的方法 发现可以分为三种: --- 删除原表数据,并重置自增列 truncate tabl ...
- 使用JDBC插入数据到ORACLE,使用标识列自增列
不同于SQL Server的是,Oracle中插入数据的时候,没有自增列或者是标识列,但是,我们又不想显式的进行主键的插入,这里,必须在Oracle数据库中指定一个标识列,或者说是一个序列.具体方法如 ...
随机推荐
- MariaDB与MySQL并存
以下是MariaDB官方文档说明,MariaDB如何安装在已经存在MySQL实例的主机上: https://mariadb.com/kb/en/library/installing-mariadb-a ...
- java 中文转拼音之pinyin4j
一.简介 有时候,须要将汉字编程相应的拼音.以方便数据的处理.比方在Android手机应用的开发上.要查询联系人的姓名.通常都是用拼音进行查询的. 比方要查询"曹孟德",就能够输入 ...
- C#:Use Form as Subform
static class SubFormExtensions { internal static bool AttachTo(this Form subForm, Panel panel) { if ...
- rpcbind服务死活启动不了
在配置nfs的时候,想要实现nfs共享文件的权限共享,必须保证uid/gid一致,方可权限的传递! 错误提示 rpcbind dead but pid file exists 解决方案 service ...
- 【mysql】Innodb三大特性之insert buffer
一.什么是insert buffer insert buffer是一种特殊的数据结构(B+ tree)并不是缓存的一部分,而是物理页,当受影响的索引页不在buffer pool时缓存 secondar ...
- PHP一些优先级的问题
直接看代码 <?php echo '1'.print(2)+3,"\n"; 不错,就是这么简单,但是很少有人能正确回答 我们执行一下 [root@localhost test ...
- ASP.NET MVC之Layout布局与@RenderBody、@RenderPage、@RenderSection
@RenderBody @RenderBody是布局页(_Layout.cshtml)通过占位符@RenderBody占用独立部分,当创建基于此布局页的试图时,视图的内容会和布局页合并,而新创建的视图 ...
- Google Map 学习过程中的代码
<!DOCTYPE html><html> <head> <title>Simple click event</title> <met ...
- razor----js
<script> $(document).ready(function () { // 2 直接加引号转换 var SpecialAptitude = '@Model.SpecialAp ...
- ZOJ 1654 Place the Robots建图思维(分块思想)+二分匹配
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=654 AC一百道水题,不如AC一道难题来的舒服. 题意:一个n*m地图 ...