`
jokze
  • 浏览: 3032 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

oracle触发器与:new,:old的使用

 
阅读更多

:new --为一个援用最新的列值;
:old --为一个援用以前的列值; 那两个变量只有在利用了要害字 "FOR EACH ROW"时才存在.且update语句两个皆有,而insert只有:new ,delect 只有:old;

系统中的触发器实例:

 

create or replace trigger JBPM.TIB_DEPLOYBYMOVEPAPER before --before暗示在操做完成前触发,after暗示在完成后触发
insert --发生发水插进数据操做触发
on JBPM.DEPLOYBYMOVEPAPER for each row --指定触发器每止触发一次
declare
    integrity_error exception; --用户自界说破绽
    errno            integer;
    errmsg           char(200);
    dummy            integer;
    found            boolean;
    row_count number;
    max_num deploybymove***.num%type; --遵照表的字段界说变量类型
    zero_today deploybymove***.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 deploybymove***;
    if row_count = 0 then
        max_num:=zero_today;--:=给变量赋值
    else
      select max(num) into max_num from deploybymove***;
    end if;
    if max_num
        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;
/

 

 

转自:http://blog.itpub.net/21459650/viewspace-1116895

 

 

分享到:
评论

相关推荐

    Oracle触发器修改自身表

    1、行级触发器不支持 ...所以想要触发器对自身表数据做修该,则用行级触发器得到 :new 和 :old对象中的相关数据,然后将这样的数据保存到 package中,然后在语句级触发期中调用 package包中保存的数据,进行更新操作

    Oracle触发器语法详解

    "Oracle触发器语法详解" Oracle 触发器是一种特殊的存储过程,它在插入、删除或修改特定表中的数据时触发执行,它比数据库本身标准的功能有更精细和更复杂的数据控制能力。触发器可以基于数据库的值使用户具有操作...

    oracle触发器与存储过程高级编程

    总之,“Oracle触发器与存储过程高级编程”是数据库开发中的重要技能,理解它们的工作原理、如何创建和使用,以及何时应该避免使用,对于提升数据库管理效率和数据安全性至关重要。通过实践和学习,你可以更好地掌握...

    oracle触发器调用存储过程

    "Oracle触发器调用存储过程" Oracle触发器可以调用...Oracle触发器调用存储过程可以通过使用自治事务来解决事务隔离性问题,确保业务逻辑的正确执行。但是,需要注意自治事务的使用规则和注意事项,以避免出现问题。

    oracle触发器功能介绍

    理解并正确使用Oracle触发器,可以帮助我们更好地管理和保护数据库中的数据,同时要注意合理使用,以避免潜在的问题。通过学习和实践,我们可以将触发器作为工具箱中的一项有力武器,为数据库的健壮性和稳定性保驾...

    oracle触发器使用笔记

    1. `:NEW` 和 `:OLD`:这两个是Oracle触发器中的特殊变量,`:NEW` 代表在DML操作(INSERT、UPDATE)后的新值,`:OLD` 则代表在DML操作前的旧值。对于INSERT操作,`:NEW` 表示新插入的行数据;UPDATE时,`:NEW` 是...

    ORACLE触发器、内置程序包教学.doc )

    根据给定的文件信息,我们将深入探讨Oracle数据库中的触发器和内置程序包,重点解析触发器的概念、创建方法以及其在数据库管理中的作用。 ### 触发器:自动化执行的存储过程 触发器是一种特殊类型的存储过程,它在...

    Oracle触发器.pdf

    Oracle触发器是Oracle数据库中一种特殊的存储程序,它在满足特定条件时自动执行,用于实现对数据的自动处理。触发器的主要作用是对数据库的DML(Data Manipulation Language)操作如INSERT、UPDATE和DELETE等进行...

    Oracle触发器语法

    Oracle触发器是数据库管理系统Oracle中的一种重要特性,用于在特定数据操作(如插入、删除、更新)发生时自动执行预定义的SQL语句或PL/SQL代码块。这些语句或代码块通常用来实现复杂的数据完整性规则、安全性控制、...

    oracle触发器

    ### Oracle触发器详解 在Oracle数据库管理中,触发器是一种非常强大的工具,它允许你在特定的数据库事件(如数据插入、更新或删除)发生时自动执行预定义的SQL语句或PL/SQL代码块。这使得数据库能够在无需外部程序...

    Oracle触发器详解

    ### Oracle触发器详解 在数据库管理系统中,Oracle触发器是一种特殊类型的存储过程,它自动执行对数据的操作,当特定事件发生时(如插入、更新或删除数据)在数据库表上执行。触发器可以用于实现复杂的数据完整性...

    oracle触发器语法要点

    ### Oracle触发器语法要点 #### 一、触发器概述 Oracle触发器是一种存储过程,它在特定的数据库事件(如INSERT、UPDATE或DELETE)发生时自动执行。触发器可以用于实施复杂的业务规则、数据完整性检查或者自动生成...

    Oracle触发器操作.pptx

    Oracle触发器是数据库管理系统Oracle中的一种重要特性,它允许开发者创建自定义的、与数据库表紧密关联的存储过程,这些过程会在特定的数据操作(如INSERT、UPDATE或DELETE)发生时自动执行,从而实现数据的验证、...

    Oracle触发器的概念和类型

    如果需通过触发器设定插入行中的某列值,则为了访问“新(new)”值,需使用一个触发器 before insert,使用 after insert 则不行。 4. Instead of 触发器命令 使用它告诉 oracle 应执行什么操作。 以上四种大类...

    oracle触发器.ppt

    Oracle触发器是数据库管理系统中的一种重要机制,它允许在特定的数据库操作(如INSERT、UPDATE、DELETE)或者特定的系统事件(如数据库启动和关闭)发生时,自动执行预定义的PL/SQL代码块。触发器是存储在数据库中...

    oracle触发器1.ppt

    总的来说,Oracle触发器是一种强大的工具,可以用来实现复杂的数据验证、业务逻辑和数据处理,但使用时应谨慎,因为过度使用或设计不当的触发器可能导致性能问题和维护困难。正确理解和运用触发器,对于确保数据库的...

Global site tag (gtag.js) - Google Analytics