oracle触发器与:new,:old的使用 --5
:new --为一个引用最新的列值;
:old --为一个引用以前的列值; 这两个变量只有在使用了关键字 "FOR EACH ROW"时才存在.且update语句两个都有,而insert只有:new ,delect 只有:old;
系统中的触发器实例:
create or replace trigger JBPM.TIB_DEPLOYBYMOVEPAPER before //before表示在操作完成前触发,after表示在完成后触发
insert //发生插入数据操作触发 /*or delete or updata*/
on JBPM.DEPLOYBYMOVEPAPER for each row //指定触发器每行触发一次
declare
    integrity_error exception; //用户自定义错误
    errno            integer;
    errmsg           char(200);
    dummy            integer;
    found            boolean;
    row_count number;
    max_num deploybymovepaper.num%type; //根据表的字段定义变量类型
    zero_today deploybymovepaper.num%type;
begin
-- Column "ID" uses sequence SEQUENCE_38
case
when inserting then //SQL语句只能使用:new特殊变量
select SEQUENCE_38.NEXTVAL INTO :new.ID from dual;//主键自增
zero_today :='0391'||to_char(sysdate,'yymmdd')||lpad(to_char(0),4,'0');//lpad函数定义字符串长度  为4不足时用0补全
    select count(*) into row_count from deploybymovepaper;
    if row_count = 0 then
        max_num:=zero_today;//:=给变量赋值
    else
      select max(num) into max_num from deploybymovepaper;
    end if;
    if max_num<zero_today then
        max_num:=zero_today;
    end if;
    if :new.num is null then
    :new.num:=lpad(to_char(to_number(max_num)+1),14,'0'); //递增编号,有14为数字组成
    end if;
when updating('num') then//:new、:old都可以用
if :new.num!=:old.num then
      :new.num:=:old.num;
end if;
end case;
-- Errors handling
exception
    when integrity_error then
       raise_application_error(errno, errmsg); //抛出异常语句
end;
/
oracle触发器与:new,:old的使用 --5的更多相关文章
- 2014/11/06 Oracle触发器初步                                        2014-11-06 09:03    49人阅读    评论(0)    收藏
		触发器我就不多解释了,保证数据的完整性的神器,嗯..也是减少程序员工作托管给数据库操作的好帮手.就不讲一些大道理了.通俗点,我们对数据库的操作,无非就是增 删 改 查. 触发器就是在删,改,增的时候( ... 
- oracle触发器加条件判断
		oracle触发器加条件判断,如果某个字段,isnode=0,那么不执行下面的方法,数据如下: create or replace trigger tr_basestation_insert_emp ... 
- [转]连续创建多个Oracle触发器失败,单个创建才成功的解决方法
		连续创建多个Oracle触发器失败,单个创建才成功的解决方法 1.当我连续执行创建多个触发器时,总是报编译通过,但存在警告或错误.如下: create or replace trigger t ... 
- Oracle 触发器在日志管理开发中的应用
		摘要: 本文讨论了利用数据库中的触发器对日志管理进行设计与实现的方法, 是对原来在客户端软件中编写日志管理方法的一种改进, 并给出了 Oracle9i 中的实例演示.关键词: Oracle; 触发器; ... 
- oracle触发器应用
		首先给大家推荐两篇我看后的博文,我已经内容转载过来: 1.对触发器的讲解 本篇主要内容如下: 8.1 触发器类型 8.1.1 DML触发器 8.1.2 替代触发器 8.1.3 系统触发器 8.2 创建 ... 
- Mybatis 插入操作时获取主键 (Oracle 触发器与SEQ)
		1.通过Oracle序列 -- Create sequence create sequence SEQ_DW_EWSYSTEM minvalue 1 maxvalue 9999999999999999 ... 
- SQL server与Oracle触发器的创建与使用
		SQL Server 1创建触发器 GO BEGIN IF (object_id('WMY', 'tr') is not null) DROP trigger WMY END; GO CREATE T ... 
- oracle触发器中增删改查本表
		oracle触发器中增删改查本表 (1)只有before insert触发器中才可以查询或更新本表 create or replace trigger tri_test_ins before inse ... 
- Oracle触发器用法实例详解
		转自:https://www.jb51.net/article/80804.htm. 本文实例讲述了Oracle触发器用法.分享给大家供大家参考,具体如下: 一.触发器简介 触发器的定义就是说某个条件 ... 
- Oracle 触发器(二)
		Oracle触发器详解 触发器是许多关系数据库系统都提供的一项技术.在oracle系统里,触发器类似过程和函数,都有声明,执行和异常处理过程的PL/SQL块. 8.1 触发器类型 触发器在数据库里 ... 
随机推荐
- [转]Flex 布局教程:语法篇
			网页布局(layout)是CSS的一个重点应用. 布局的传统解决方案,基于盒状模型,依赖 display属性 + position属性 + float属性.它对于那些特殊布局非常不方便,比如,垂直居中 ... 
- [转] webpack debug in webstorm
			先run build,然后用node server.js来做 WebStorm 11 adds support for debugging client-side apps built with We ... 
- vim 缩写abbreviation
			创建 :ab abbreviation pharse 取消 :unab abbreviation 缩写使用 insert模式下输入缩写,Enter键获得pharse. 
- MySQL日志概述
			为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处.LaplaceDemon/SJQ. http://www.cnblogs.com/shijiaqi1066/p/3859866.html ... 
- 利用SQLiteOpenHelper创建数据库,进行增删改查操作
			Android中提供SQLiteOpenHelper类,在该类的构造器中,调用Context中的方法创建并打开一个指定名称的数据库对象.继承和扩展SQLiteOpenHelper类主要做的工作就是重写 ... 
- Getting Started with Testing ——开始单元测试
			Android tests are based on JUnit, and you can run them either as local unit tests on the JVM or as i ... 
- 删除我的电脑中360随身WiFi云U盘的图标
			可通过删除注册表的方法 运行-regedit 找到这个项 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\My ... 
- 【转】 KVC/KVO原理详解及编程指南
			原文地址:http://blog.csdn.net/wzzvictory/article/details/9674431 前言: 1.本文基本不讲KVC/KVO的用法,只结合网上的资料说说对这种技术的 ... 
- Servlet(一)
			BS架构的优势 1.数据库之负责数据库的管理 2.Web服务器负责业务逻辑的处理 3.浏览器提供操作界面 4.不需要单独安装客户端 5.开发相对于CS简单,客户端和服务器的通信模块都是使用标准的HTT ... 
- 258. Add Digits(C++)
			258. Add Digits Given a non-negative integer num, repeatedly add all its digits until the result has ... 
