如果需要插入时自动增加还需要创建一个 trigger(触发器),否则需要在程序中手工设置

  例如:将表fcbook的主键fid设置为自增

  1. 创建squence

  Name : 创建的名字

  Min value : 最小计数

  Max value : 最大计数

  Start with : 起始计数

  Increment by : 步长

  Cache size : 缓存序列

  指定Cache,oracle会预先在内存中放置一组指定大小的序列,当使用完这些序列后再生成下一组,这样会存取得快些,但当数据库关闭等情况时,下一次再生成序列时可能会使序列间断,不是一串连续的号,当不是特别需要连续的序列时最好指定;

  不填写Cache值,会使用默认设置,我这里是20;

  当Cache size设置为0时 为nocache,这样会产生连续的序列。

  Cycle : 循环序列,当到达最大值后从最小值重新开始

  Order : 保证序列产生的顺序和请求的顺序是一致的,在并行模式下如果A、B同时对序列请求那么先产生的序列号必然返回给先请求的用户。例如当前序列号为10,A先请求B后请求那么11一定返回给A,12给B,在noorder的情况下,有可能11给B,12给A。这种情况只发生在oracle并行服务器上,大多数情况下不需要。

  相应的squence创建sql:

  -- Create sequencecreate sequence Rayn.SEQ_FCBOOKminvalue 1maxvalue 99999999999start with 1increment by 1cache 20;

  2. 创建 trigger

  ORACLE触发器有以下两类:

  1> 语句级(Statement-level)触发器,在CREATE TRIGGER语句中不包含FOR EACH ROW子句。语句级触发器对于触发事件只能触发一次,而且不能访问受触发器影响的每一行的列值。一般用语句级触发器处理有关引起触发器触发的SQL语句的信息——例如,由谁来执行和什么时间执行。

  2> 行级(Row-level)触发器,在CREATE TRIGGER语句中包含FOR EACH ROW子句。行级触发器可对受触发器影响的每一行触发,并且能够访问原列值和通过SQL语句处理的新列值。行级触发器的典型应用是当需要知道行的列值时,执行一条事务规则。

  OK确认后,需要输入trigger_body,对应的sql补全为:

  create or replace trigger TR_FCBOOK  before insert on fcbook    for each rowbegin  SELECT SEQ_FCBOOK.Nextval INTO :new.fid FROM dual;end TR_FCBOOK;

  上语法中,trigger_event 是对应于DML的三条语句INSERT、UPDATE、DELETE;table_name是与触发器相关的表名称;FOR EACH ROW是可选子句,当使用时,对每条相应行将引起触发器触发;condition是可选的ORACLE BOOLEAN条件,当条件为真时触发器触发;trigger_body是触发器触发时执行的PL/SQL块。

  在触发器体内,行级触发器可以引用触发器触发时已存在的行的列值,这些值倚赖于引起触发器触发的SQL语句。

  1> 对于INSERT语句,要被插入的数值包含在new.column_name,这里的column_name是表中的一列。

  2> 对于UPDATE语句,列的原值包含在old.column_name中,数据列的新值在new.column_name中。

  3> 对于DELETE语句,将要删除的行的列值放在old.column_name中。

oracle自增auto_increment相关推荐

  1. mysql中自增auto_increment功能的相关设置及问题

    1. mysql中的自增auto_increment功能相信每位phper都用过,本文就为大家分享一下mysql字段自增功能的具体查看及设置方法 mysql中的自增auto_increment功能相信 ...

  2. jdbc链接mysql按照id查询_使用jdbc连接并操作Oracle数据库(增删改查IDUS)

    使用jdbc连接并操作Oracle数据库(增删改查IDUS) [oracle@zaibei-db ~]$ sqlplus /nolog SQL*Plus: Release 11.2.0.4.0 Pro ...

  3. oracle导出自增设置,oracle008:oracle自增,自适应,数据闪回,导入导出

    oracle008:oracle自增,自适应,数据闪回,导入导出 oracle008:oracle自增,自适应,数据闪回,导入导出 一,oracle数据自增 在MySQL中自增使用主键和自增来实现,但 ...

  4. ORACLE自增字段创建方法

    oracle没有ORACLE自增字段这样的功能,但是通过触发器(trigger)和序列(sequence)可以实现. 假设关键字段为id,建一个序列,代码为: create sequence seq_ ...

  5. UltraGrid本地Oracle数据库增删改查

    UltraGrid本地Oracle数据库增删改查 {public partial class Form1 : Form{public Form1(){InitializeComponent();DoQ ...

  6. Java Web 应用实例 servlet实现oracle 基本增删改查

    原文地址为: Java Web 应用实例 servlet实现oracle 基本增删改查 很久没有写博客了,可能是太懒散,不愿意把时间花在这上面,可是我心里还是知道写博客的重要性的 ,所以从今天开始 , ...

  7. oracle的增删改表字段

    oracle的增删改表字段 简单示例 1.添加字段: alter table 表名 add (xxx varchar2(48)/integer, xxx varchar2(48)/integer); ...

  8. 如何在Oracle上使用AUTO_INCREMENT创建ID?

    本文翻译自:How to create id with AUTO_INCREMENT on Oracle? It appears that there is no concept of AUTO_IN ...

  9. oracle自增自删分区的脚本,oracle实现自增方法(错误ora-04098解决)

    mysql实现自增很简单,在主键处加上auto_increment关键字就可以了,而oracle实现起来并不是这么容易的,需要借助序列和触发器才能实现. 具体代码如下: 1.建立一个表: create ...

最新文章

  1. Linux 常用技巧记录
  2. android 8.0 intent,Android 8.0通知栏适配问题
  3. Inf2Cat应用的参数使用详细介绍
  4. 利用Servlet实现用户永久登录
  5. 亚洲诚信服务器显示F,在Apache2服务器上部署SSL证书
  6. Object.wait()与Object.notify()的用法
  7. 【cropper】介绍:JavaScript图片裁切
  8. ASP.NET .Net UCS2 加码最复杂的方法
  9. Zuul:路由转发,排除和自定义
  10. oracle 给表空间改名,Oracle重命名表空间和删除表空间
  11. 菜鸟学ASP.NET MVC4入门笔记
  12. NS3Gym python侧代码分析
  13. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol52]45.描述一些对抗RSA侧信道攻击的防御方法
  14. Jenkins + gitlab webhook实现自动化部署
  15. matlab实验题目,MATLAB实验题目
  16. 随想录(移动app下的生活)
  17. @程序员,如何在五分钟内构建个人网盘服务?| 技术头条
  18. 后端日志【22】:时间过的很快,坚持的第7.3个月过去了,我有什么变化?
  19. 14. AsciiArt礼节/15. cterm的拷贝TCP包功能
  20. linux centos7 iso镜像下载,CentOS 7镜像文件下载

热门文章

  1. JavaScript网页中点击按钮切换显示的内容
  2. 被逼回国去了阿里,要不是“高薪落地”我就哭了
  3. QLineEdit 设置为不可编辑
  4. 02-4设置第一启动项--U盘装系统中bios怎么设置USB启动
  5. 小学教师计算机考证怎么考
  6. 步步高s6和s5pro区别选哪个好
  7. 预约美发平台开发,美容美发店老板可以借鉴上门推拿模式
  8. python代码图片头像_Flask 上传自定义头像的实例详解
  9. python 几种android截屏方式的学习与使用
  10. 英语一和英语二的区别,考研的你知晓了吗?