博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle序列和触发器实现表的主键自增
阅读量:6337 次
发布时间:2019-06-22

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

过创建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://ryaoa.baihongyu.com/

你可能感兴趣的文章
JPDA 架构研究17 - JDI概览
查看>>
MySQL误操作后如何快速恢复数据
查看>>
QuartZ Cron表达式
查看>>
性能测试工具VTune的功能和用法介绍
查看>>
音频视频组件Audio DJ Studio for .NET更新至v10.0.0.0丨附下载
查看>>
线上问题处理(一)
查看>>
在Centos7 系统中使用supermin制作CentOS6 的Docker镜像
查看>>
select2和bootstrap模态框使用时出现的bug以及解决方案
查看>>
EOS cleos 链接节点命令
查看>>
4.39-Nginx日志不记录静态文件
查看>>
写出企业要求的 Python 代码风格
查看>>
OSChina 周四乱弹 —— 如何正确地请客吃饭
查看>>
OSChina 周三乱弹 ——所有的酒,都不如你
查看>>
Pig的输入输出及foreach,group关系操作
查看>>
TechParty - Code For Public - sz
查看>>
emacs 前端插件推荐[emmet-mode]
查看>>
dnsmasq配置文件
查看>>
Unity链接SqlServer数据库并进行简单的数据查询
查看>>
23种设计模式
查看>>
原生javascript学习:用循环改变div颜色
查看>>