教你如何通过PL/SQL创建序列和触发器实现表自增字段

目录
  • 1.通过PL/SQL创建序列:
  • 2.通过PL/SQL创建触发器

假设我们有一个address表,希望实现地址编号address_id的自增

1.通过PL/SQL创建序列:

首先,新建Sequences对象

选择序列所有者,并填写序列的起始值、名称和增量等信息,并应用

可以查看其SQL创建语句

-- Create sequence
create sequence SEQ_ADDRESS_ID
minvalue 10001
maxvalue 999999999999999999999999999
start with 10001
increment by 1
cache 20;

序列创建完成后,可以通过系统表dual查询

--查询序列当前值
select seq_address_id.currval from dual;
--查询序列下一值
select seq_address_id.nextval from dual;

注:Oracle刚创建完序列后用currval查询不了当前值的,得先用nextval查询过后才能进行currval的查询

到此,已经可以实现address表中地址编号字段address_id的自增,通过插入时调用序列的nextval即可

insert into address(address_id,address_name) values(seq_address_id.nextval,'第八大街');

为了使序列的调用方式更加方便,我们接下来要创建一个触发器。

2.通过PL/SQL创建触发器

首先,新建trigger对象

填写触发器名称,以及下列要素并确定

触发时间(Fires):before、after、instead of
事件(Event):insert、update、delete
表或视图(Table or View):选择需要创建触发器的表

确定后,会打开触发器程序编辑窗口,我们需要在红框处编写触发器要执行的SQL语句

这里就是为address表的address_id字段插入自增序列:

select seq_address_id.nextval into :new.address_id from dual;

该触发器在数据库注册了表的侦听,即当指定表address插入记录之前,我们调用序列的nextval获得新值,插入需要自增的字段。

至此,我们就完成了address表的address_id字段自增,执行插入SQL时,该字段会自动增长

insert into address(address_name) values('第八大街');

需要注意的是,在数据库操作中,触发器的使用对系统资源耗费相对较大。对于容量相对较小的表我们可以忽略触发器带来的性能影响。考虑到大表操作的性能问题, 我们尽可能的减少触发器的使用,改为直接手动调用序列函数即可。

到此这篇关于教你如何通过PL/SQL创建序列和触发器实现表自增字段的文章就介绍到这了,更多相关PL/SQL创建序列和触发器实现表自增字段内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • ORACLE PL/SQL 触发器编程篇介绍

    1.基本概念 两种功能:完成由数据库的完整性约束难以完成的复杂业务规则的约束:监视数据库的各种操作,实现审计功能. 触发器分为:DML触发器(对表或视图执行DML操作时触发),INSTEAD OF触发器(只定义在视图上,替代实际的操作语句),系统触发器(对数据库系统进行操作时触发,如DDL语句.启动或关闭数据库等) 触发事件: 上述触发器中括号内容都是触发事件. 触发条件: WHEN子句 触发对象:包括表.视图.模式.数据库. 触发操作:触发器自动执行的程序. 触发时机:触发器相对操作执行的时间

  • 教你如何通过PL/SQL创建序列和触发器实现表自增字段

    目录 1.通过PL/SQL创建序列: 2.通过PL/SQL创建触发器 假设我们有一个address表,希望实现地址编号address_id的自增 1.通过PL/SQL创建序列: 首先,新建Sequences对象 选择序列所有者,并填写序列的起始值.名称和增量等信息,并应用 可以查看其SQL创建语句 -- Create sequence create sequence SEQ_ADDRESS_ID minvalue 10001 maxvalue 99999999999999999999999999

  • Oracle教程之pl/sql简介

    本文实例讲述了Oracle的pl/sql.分享给大家供大家参考,具体如下: 一.pl/sql 是什么 pl/sql(procedural language/sql)是oracle在标准的sql语言上的扩展. pl/sql不仅允许嵌入sql语言,还可以定义变量和常量,允许使用条件语句和循环语句,允许使用例外处理各种错误,这样使得它的功能变得更加强大. 二.为什么要学pl/sql 1.提高应用程序的运行性能 2.模块化的设计思想(分页的过程,订单的过程,转账的过程..) 3.减少网络传输量 4.提高

  • Oracle PL/SQL语言入门基础

    正在看的ORACLE教程是:Oracle PL/SQL语言入门基础.PL/SQL是ORACLE对标准数据库语言的扩展,ORACLE公司已经将PL/SQL整合到ORACLE 服务器和其他工具中了,近几年中更多的开发人员和DBA开始使用PL/SQL,本文将讲述PL/SQL基础语法,结构和组件.以及如何设计并执行一个PL/SQL程序. PL/SQL的优点 从版本6开始PL/SQL就被可靠的整合到ORACLE中了,一旦掌握PL/SQL的优点以及其独有的数据管理的便利性,那么你很难想象ORACLE缺了PL

  • PL/SQL远程备份和恢复Oracle数据库

    在客户端远程备份的文件保存在数据库所在主机上,不会直接拷贝到客户端. ------------------------------------------ 首先无论你的Oracle服务器是Linux还是windows操作系统,Oracle的备份和恢复操作都是使用DBMS_DUMP来实现导入(备份)和导出(恢复).首先你要安装好PL/SQL,用PL/SQL来执行我下面提供的JOB就可以实现了.  一.Oracle的导出(备份) 1.用PLSQL连接Oracle数据库服务器,使用你需要导出的用户连接

  • 使用PL/SQL Developer连接Oracle数据库的方法图解

    之前因为项目的原因需要使用Oracle数据库,由于时间有限没办法从基础开始学习,而且oracle操作的命令界面又太不友好,于是就找到了PL/SQL Developer这个很好用的软件来间接使用数据库. 下面简单介绍一下如何用这个软件连接Oracle数据库. 第一步 安装Oracle Database和PL/SQL Developer 这一步网上有很多的教程就不详细介绍.Oracle可以直接到官网去下载,在安装中注意几个问题就行: 1.一定要记住自己全局数据库名字和口令,这个在后面连接的时候很重要

  • Oracle 10G:PL/SQL正规表达式(正则表达式)手册

    Oracle 的正规表达式的实施是以各种 SQL 函数和一个 WHERE 子句操作符的形式出现的.如果您不熟悉正规表达式,那么这篇文章可以让您了解一下这种新的极其强大然而表面上有点神秘的功能.已经对正规表达式很熟悉的读者可以了解如何在 Oracle SQL 语言的环境中应用这种功能. 什么是正规表达式? 正规表达式由一个或多个字符型文字和/或元字符组成.在最简单的格式下,正规表达式仅由字符文字组成,如正规表达式 cat.它被读作字母 c,接着是字母 a 和 t,这种模式匹配 cat.locati

  • pl/sql连接远程oracle服务器的配置教程

    本文为大家分享了pl/sql连接远程oracle服务器的配置教程,具体内容如下 方法1: 打开所有程序->找到oracle-oradb11g-home1->Net Configuration Assistant 本地网络服务名配置,点击下一步 选择添加,点击下一步 填写服务名(注数据库名),点击下一步 选择通信协议:TCP,下一步 填写数据库所在的主机名(也可以是IP地址),选择端口号(根据数据库所在的主机的端口号进行选择,一般是标准端口号),点击下一步,选择测试,点击下一步 ok,到此结束.

  • PL/SQL中编写Oracle数据库分页的存储过程

    其实 Oracle数据库的分页还是比较容易理解的.此文以oracle数据库中的SCOTT用户的EMP表为例,用PL/SQL Developer编写一个分页存储过程,要求是:可以输入表名,每页显示记录数,当前页,返回总记录数,总页数和返回的结果集. 由于需要返回查询出来的结果集,需要在PL/SQL中创建一个package,这个包里面定义一个refcursor类型,用于记录sql语句查询出来的结果集.创建包的代码如下: create or replace package pagingPackage

  • oracle复习笔记之PL/SQL程序所要了解的知识点

    复习内容: PL/SQL的基本语法.记录类型.流程控制.游标的使用. 异常处理机制.存储函数/存储过程.触发器. 为方便大家跟着我的笔记练习,为此提供数据库表文件给大家下载:点我下载 为了要有输出的结果,在写PL/SQL程序前都在先运行这一句: set serveroutput on 结构: declare --声明变量.类型.游标 begin --程序的执行部分(类似于java里的main()方法) exception --针对begin块中出现的异常,提供处理的机制 --when...the

  • Oracle PL/SQL入门案例实践

    正在看的ORACLE教程是:Oracle PL/SQL入门案例实践. 前面已经了解了关于PL/SQL编程的基础,本文将结合一个案例来加深对这些知识点的理解. 一. 案例介绍 某数据库有两张表,是关于某公司员工资料.薪水和部门信息的,它们分别是emp表和dept表,两张表的结构如下: 要求如下: 1.按照上表结构建立相应的表,并每张表写入5组合法数据. 2.操纵相关表,使得"技术部"的员工的薪水上涨20%. 3.建立日志,追踪薪水变动情况. 4.建立测试包. 二. 案例的分析与实现 从前

随机推荐