文档章节

Oracle序列和触发器实现表的主键自增

小强斋太
 小强斋太
发布于 2016/11/09 20:07
字数 469
阅读 3
收藏 0
点赞 0
评论 0

过创建Oracle序列和触发器实现表的主键自增。

首先创建Oracle序列,序列的语法格式为:

CREATE SEQUENCE 序列名

[INCREMENT BY n]  

[START WITH n]  

[{MAXVALUE/MINVALUE n|NOMAXVALUE}]  

[{CYCLE|NOCYCLE}]  

[{CACHE n|NOCACHE}];
  • INCREMENT BY 用于定义序列的步长,如果省略,则默认为1,如果出现负值,则代表序列的值是按照此步长递减的。
  • START WITH 定义Oracle序列的初始值(即产生的第一个值),默认为1。
  • MAXVALUE 定义序列生成器能产生的最大值。选项NOMAXVALUE是默认选项,代表没有最大值定义,这时对于递增序列,系统能够产生的最大值是10的27次方;对于递减序列,最大值是-1。
  • MINVALUE定义序列生成器能产生的最小值。选项NOMAXVALUE是默认选项,代表没有最小值定义,
  • CYCLE和NOCYCLE 表示当序列生成器的值达到限制值后是否循环。CYCLE代表循环,NOCYCLE代表不循环。如果循环,则当递增序列达到最大值时,循环到最小值;对于递减序列达到最小值时,循环到最大值。如果不循环,达到限制值后,继续产生新值就会发生错误。
  • CACHE(缓冲)定义存放序列的内存块的大小,默认为20。NOCACHE表示不对序列进行内存缓冲。对序列进行内存缓冲,可以改善序列的性能。

删除序列的语法是

DROP SEQUENCE 序列名;

假设有表TEST,首先建立递增Oracle序列SEQ_TEST:

create sequence SEQ_TEST  
increment by 1  
start with 1  
minvalue 1 nomaxvalue  
nocylce

然后建立触发器,当有数据插入表TEST时,使用序列为其去的递增的主键值

create trigger TRG_TEST before insert on TEST  
for each row  
begin  
select SEQ_TEST.nextval into :new.TEST_ID from dual;  
end;


 

 

本文转载自:http://www.cnblogs.com/xqzt/archive/2013/05/27/5637068.html

共有 人打赏支持
小强斋太
粉丝 0
博文 181
码字总数 0
作品 0
广州
Oracle序列应用举例

序列是用来生成唯一、连续的整数的数据库对象。序列通常用来自动生成主键或唯一键的值。本篇文章的主题是通过创建Oracle序列和触发器实现表的主键自增。 1. 创建序列 Oracle序列的语法格式为...

博为峰教研组
2016/10/28
2
0
Oracle序列使用:建立、删除

在开始讲解Oracle序列使用方法之前,先加一点关于Oracle client sqlplus的使用,就是如果执行多行语句的话一定要加“/”才能表示结束,并执行!本篇文章的主题是通过创建Oracle序列和触发器实...

teacheryang
2012/08/13
0
0
我的oracle主键解决方案是否正确

之前的数据库是mysql5的,使用hibernate没有任何错误。 最近自己再尝试做一个项目,数据库换成了oracle10g,但是持久层依然是hibernate。 问题来了:使用mysql数据库的时候我的每个domain的x...

it-达摩
2010/12/20
504
2
Oracle 10G中关于序列使用详解.

Oracle 10G中关于序列使用详解. 数据库设计的三大范式第一条就是独立的表结构中必须有唯一主键来标识表中数据.在以往微软的SQL Server(duo版本)平台上.手动编码实现表中主键.并设定为自增列是...

猴子
2011/11/10
0
0
Oracle主键ID插入时自动增长(触发器)

需要 实现插入数据时,ID列自动增长 思路 创建一个Oracle自动增长序列,然后创建一个Oracle的触发器,当检查到插入该表数据时,这从序列里面取数据,作为自动增长id数据插入。 实现 创建序列...

亚林瓜子
06/12
0
0
jdbc使用apache的dbutil连接oracle,查询始终不成功

1.dbcpconfig.properties中: 连接设置 driverClassName=oracle.jdbc.driver.OracleDriver url=jdbc:oracle:thin:@localhost :1521:orcl username=*** password=*** 2.数据库:表名:JOBINFO......

欧阳陈曦
2015/04/10
209
2
MySQL实现序列(Sequence)效果以及在Mybatis中如何使用这种策略

前言: 在oracle中一般使用序列(Sequence)来处理主键字段,在MySQL中是没有序列的,但是MySQL有提供了自增长(increment)来实现类似的目的,但也只是自增,而不能设置步长、开始索引、是否循环...

pangfc
2017/01/06
0
0
Mysql,SqlServer,Oracle主键自动增长的设置

1、把主键定义为自动增长标识符类型 MySql 在mysql中,如果把表的主键设为auto_increment类型,数据库就会自动为主键赋值。例如: customers(id auto_increment , name ( customers(name) i...

北方攻城师
2014/07/29
0
0
Mysql、Sql Server、Oracle主键自动增长的设置

1、把主键定义为自动增长标识符类型 MySql 在mysql中,如果把表的主键设为auto_increment类型,数据库就会自动为主键赋值。例如: create table customers(id int auto_increment primary k...

Junn
2014/03/17
0
0
Hibernate各种主键生成策略与配置详解 - 真的很详细啊!!

1、assigned 主键由外部程序负责生成,在 save() 之前必须指定一个。Hibernate不负责维护主键生成。与Hibernate和底层数据库都无关,可以跨数据库。在存储对象前,必须要使用主键的setter方法...

52PiggySky
2013/11/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

公众号推荐

阿里技术 书籍:《不止代码》

courtzjl
10分钟前
0
0
关于改进工作效率

1.给不同的业务线建立需求群,所有的数据需求都在群里面提。 2.对于特别难搞定的事情,到对应的技术哪去做,有问题随时沟通。 3.定期给工作总结形成方法论。 4.学习新的技术,尝试用新的方法...

Avner
17分钟前
0
0
关于thinkphp 框架开启路径重写,无法获取Authorization Header

今天遇到在thinkphp框架中获取不到header头里边的 Authorization ,后来在.htaccess里面加多一项解决,记录下: <IfModule mod_rewrite.c> Options +FollowSymlinks -Multiviews Rewrite......

殘留回憶
21分钟前
0
0
centos 使用yum安装nginx后如何添加模块 10

centos 使用yum安装nginx后如何添加模块 10 centos6.2版本,使用yum来安装了nginx,但是最近需要重新添加模块,所以就傻了,询问下有人知道怎么重新添加模块吗? PS:俺是新手,需要高手救助...

linjin200
24分钟前
0
0
dubbo 资料

dubbo资料网站: https://www.cnblogs.com/a8457013/p/7818925.html

zaolonglei
25分钟前
0
0
大型网站,你是如何架构的?

大型网站,你是如何架构的?

微小宝
27分钟前
0
0
javaScript选框的全选与取消

<div> <input type="button" value="全选" onclick="quan()"> <input type="button" value="取消" onclick="cancel()"> <input type="button" value="反选" onclick="reverse()"> <table> <t......

南桥北木
28分钟前
0
0
七牛云宫静:基于容器和大数据平台的持续交付平台

7 月 6 日上午,在 ArchSummit 2018 深圳站 | 全球架构师峰会上,七牛云工程效率部技术专家宫静分享了《基于容器和大数据平台的持续交付平台》为题的演讲。本文是对演讲内容的整理。
 
 本...

七牛云
35分钟前
1
0
Linux系统下如何查看某个命令的安装位置

1.which + 命令 会出现这个命令的路径,如果不是软链接的话,那么这就是此软件的安装路径;如果是软连接的话,那么进入下一步 2.进入上面的路径下,输入:ls -al 要查照的命令 会出现它的真是...

xiaomin0322
35分钟前
1
0
微信小程序富文本图片处理二

一、将富文本中图片的相对链接地址修改成绝对链接地址 //替换图片链接 data.content = data.content.replace(/<img [^>]*src=['"]([^'"]+)[^>]*>/gi, function (match......

tianma3798
39分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部