知识大全 关于触发器修改自身数据表实例

Posted 语句

篇首语:空空的口袋不能阻碍你的未来,空空的脑袋你将永远贫穷。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 关于触发器修改自身数据表实例相关的知识,希望对你有一定的参考价值。

   前言   当然 在触发器修改自身数据表 对于有ORACLE数据库后台编程人员来说 并不应该算是一个难题 可能在平时的工作中就经常要遇到   但对于刚刚使用ORACLE数据库后台编程人员来说 的确是一个比较烦人的问题      说明   ORACLE的触发器分为两类 行触发器(For Each Row)和表触发器 在行触发器中 不得将Insert/Update/Delete语句作用于自身数据表 在表触发器中 不得使用:New/:Old语句   但在实际编程过程中 我们往往需要对自身数据表进行DML(Insert/Update/Delete)操作 同时引用:New/:Old对象   如 使用Insert Into xxx (Select * From yyy Where xKey= )语句后 我们需要保存插入记录的时间 由于数据库操作的时间差 我们不可以使用:New xDate:=SysDate语句<使用这一语句后 插入的每笔记录xDate的数值会不一样 可相差数秒>   对我们来说 最好的语句是 Update xxx Set xDate=SysDate Where xKey=:New xKey 此时 我们使用Update语句的同时 又使用了:New对象 ORACLE认为不合法      解决提案  实现此需求 我们需要建立一个行触发器 一个表触发器以及一个程序包      创建测试环境   Drop Table xxx;   Drop Table yyy;    创建数据表   Create Table xxx(     xKey  Number( )     xDate  Date     xData  number( ));   Create Table yyy(     xKey  Number( )     xDate  Date     xData  number( ));      创建程序包 设立全局变量G_xKe   Create Or Replace Package Pkg_xxx_Update   as     G_xKey xxx xKey%Type;   End Pkg_xxx_Update;   /    创建行触发器 并将xKey的值存入程序包的全局变量中   Create Or Replace Trigger TRG_Upd_xxx_Rec   After Insert On xxx   For Each Row   Begin     Pkg_xxx_update G_xKey:=:New xKey;   End;   /    创建表触发器 根据程序包的全局变量 对数据表的xDate字段进行更新   Create Or Replace Trigger TRG_Upd_xxx_TB   After Insert On xxx   Begin     Update xxx      set        xDate=SysDate      Where        xKey=PKG_xxx_Update G_xKey;   End;   /    插入大量数据   <<InsertMultiRecord>>   Declare   L_Count Number:= ;   Begin   Delete from yyy;   While L_Count<   Loop   insert into yyy   values( SysDate L_Count);   L_Count:=L_Count+ ;   End Loop;   Commit;   End InsertMultiRecord;      测试触发器   Insert Into xxx     (Select * from yyy);   Commit;   Select * From xxx; cha138/Article/program/Oracle/201311/18637

相关参考

知识大全 SQL Server触发器创建、删除、修改、查看

SQLServer触发器创建、删除、修改、查看  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一

知识大全 Oracle触发器语法及实例

Oracle触发器语法及实例  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一Oracle触发器

知识大全 SQL触发器实例讲解

SQL触发器实例讲解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!cha138/Arti

知识大全 sql update 语法与实例

  sqlupdate语法与实例  在日常使用的数据库教程是一个不断变化的数据存储在SQL是用于修改数据已经在数据库中的更新和删除mandsThe更新语句可以更新表格中的一个或多个记录命令  UPDA

知识大全 关于oracle中大对象处理的一些方法和实例

  在oracle中有个大对象(lobs)类型可用分别是blobclobbfilenclob  下面是对lob数据类型的简单介绍  lblob:二进制lob为二进制数据最长可达GB存贮在数据库中  l

知识大全 JQuery的自定义事件代码,触发,绑定简单实例

JQuery的自定义事件代码,触发,绑定简单实例  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!下面

知识大全 回滚段问题

  回滚段管理一直是ORACLE数据库管理的一个难题本文通过实例介绍ORACLE回滚段的概念用法和规划及问题的解决      回滚段概述      回滚段用于存放数据修改之前的值(包括数据修改之前的位

规程关于计算机软件的修改与保存有哪些规定?

规程关于计算机软件的修改与保存有哪些规定?参考答案:1、更新、升级计算机系统软件、应用软件或下载数据,其存储介质须是本计算机专用存储介质,不允许与其它计算机系统交换使用;2、进行计算机软件组态、设定值

规程关于计算机软件的修改与保存有哪些规定?

规程关于计算机软件的修改与保存有哪些规定?参考答案:1、更新、升级计算机系统软件、应用软件或下载数据,其存储介质须是本计算机专用存储介质,不允许与其它计算机系统交换使用;2、进行计算机软件组态、设定值

知识大全 如何通过触发器实现数据库的即时同步

问题如何通过触发器实现数据库的即时同步?  解答具体的解决方法请参考下文  即时同步两个表的示例如下:    测试环境如下:SQLSever数据库远程主机名:xz用户名:sa密码:无数据库名:test