Oracle实现主键自增

Oracle实现字段的自增 专栏收录该内容
1 篇文章 0 订阅

Oracle实现主键自增

因为oracle不存在mysql 的自增方法auto_increment,所以在Oracle中要实现字段的自增需要使用序列和触发器来实现字段的自增。关于oracle的安装和卸载可以看我上一篇文章。
第一步:创建序列
语法: create sequence 序列名 [INCREMENT BY 值 START WITH 初始值 MAXVALUE 最大值 MINVALUE 最小值 CYCLE/NOCYCLE CACHE/NOCACHE]
参数说明
INCREMENT BY :序列变化的步进,负值表示递减。(默认1)
START WITH:序列的初始值 。(默认1)
MAXvalue:序列可生成的最大值。(默认不限制最大值,NOMAXVALUE)
MINVALUE:序列可生成的最小值。(默认不限制最小值,NOMINVALUE)
CYCLE:用于定义当序列产生的值达到限制值后是否循环(NOCYCLE:不循环,CYCLE:循环)。
CACHE:表示缓存序列的个数,数据库异常终止可能会导致序列中断不连续的情况,默认值为20,如果不使用缓存可设置NOCACHE
例如:create sequence test2_sequence increment by 1 start with 20 nomaxvalue nocycle ;
查看序列:SECECT 序列名.currval,序列名.nextval from dual;
第二步:创建触发器
触发器
在触发器中有一个触发事件,触发器是通过这个“触发事件”来执行的(而存储过程的调用或执行是由用户或应用程序进行的)。能够引起触发器运行的操作被称为“触发事件”,如执行DML语句(使用INSERT、UPDATE、DELETE语句对表或视图执行数据处理操作);执行DDL语句(CREATE、ALTER、DROP语句在数据库中创建、修改、删除模式对象);引发数据库系统事件(如系统启动或退出、产生异常错误等);引发用户事件(如登录或退出数据库操作)。语法格式如下:
在这里插入图片描述
关键字:
trigger:表示创建触发器的关键字,就如同创建存储过程的关键字“produce”一样
before | after | instead of:表示“出发时机”的关键字。before表示在执行DML等操作之前触发,这种方式能够防止某些错误操作发生而便于回滚或是实现某些业务规则;after表示在DML等操作发生之后发生,这种方式便于记录该操作或做某些事后处理信息;instead of表示触发器为替代触发器。
on:表示操作的数据表、视图、用户模式和数据库等,对它们执行某种数据操作(比如对表执行INSERT、ALTER、DROP等操作),将引起触发器的运行。
for each row:指定触发器为行级触发器,当DML语句对每一行数据进行操作时都会引起该触发器的运行。如果未指定该条件,则表示创建语句级触发器,这时无论数据操作影响多少行,触发器都只会执行一次。
语法中的参数及说明:
tri_name:触发器的名称,如果数据库中已经存在了此名称,则可以指定“or replace”关键字,这样新的触发器将覆盖掉原来的触发器。
tri_event:触发事件,比如常用的INSERT、UPDATE、DELETE、CREATE、ALTER、DROP等。 table_name | view_name | user_name |db_name:分别表示操作的数据表、视图、用户模式和数据库,对它们的某些操作将引起触发器的运行。
tri_condition:表示触发器条件表达式,只有当该表达式的值为true时,遇到触发事件才会自动执行触发器,使其执行触发操作,否则即便是遇到触发事件也不会执行触发器。
plsql_sentences:PL/SQL语句,它是触发器功能实现的主体。
例:
在这里插入图片描述

  • 1
    点赞
  • 0
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值