`
xkorey
  • 浏览: 153182 次
  • 性别: Icon_minigender_1
  • 来自: 石家庄
社区版块
存档分类
最新评论

oracle aaaAAF tiger

阅读更多
关键字: oracle 数据库 触发器 trigger 语法
语法规则:
Create [or replace] trigger [模式.]触发器名
       Before| after   insert|delete|(update of 列名)
On 表名
[for each row]
When 条件
PL/SQL块
说明:
For each row的意义是:在一次操作表的语句中,每操作成功一行就会触发一次;不写的话,表示是表级触发器,则无论操作多少行,都只触发一次;
When条件的出现说明了,在DML操作的时候也许一定会触发触发器,但是触发器不一定会做实际的工作,比如when 后的条件不为真的时候,触发器只是简单地跳过了PL/SQL块;
例子:
sql 代码
create or replace trigger wf_tri_user_list before insert or update or delete on user_list  
for each row  
declare 
   uid varchar2(10); useq varchar2(10); asql varchar2(200); namea varchar2(200); nameb varchar2(200);  
begin 
   namea:=NULL;  
   nameb:=NULL;  
   if inserting then 
      insert into wflow.bpm_org_user(userid,username,diaplayname,seq) values(:NEW.user_id,:NEW.user_name,:NEW.user_realname,:NEW.user_id);  
      dbms_output.put_line('insert trigger is chufale .....');  
       
   end if;  
   if updating then 
      if (:NEW.user_name<>:OLD.user_name) and (:NEW.user_realname<>:OLD.user_realname) then 
         namea:=:NEW.user_name;  
         nameb:=:NEW.user_realname;  
         asql:='update wflow.bpm_org_user set diaplayname=:1 where username=:2';  
         execute immediate asql using namea,nameb;  
      else 
        if :NEW.user_name<>:OLD.user_name then 
          namea:=:NEW.user_name;  
          asql:='update wflow.bpm_org_user set user_name=:1 where username=:2';  
          execute immediate asql using namea;  
        else 
          if :NEW.user_realname<>:OLD.user_realname then 
            nameb:=:NEW.user_realname;  
            asql:='update wflow.bpm_org_user set diaplayname=:1 where username=:2';  
            execute immediate asql using nameb,:OLD.user_id;  
          end if;  
        end if;  
      end if;  
   end if;  
   if deleting then 
      update wflow.bpm_org_jobusers set userid = 0 where :OLD.user_id =userid and parentid=-1;  
      delete from wflow.bpm_org_jobusers where userid = :OLD.user_id;  
      delete wflow.bpm_org_user where userid=:OLD.user_id;  
   end if;  
   commit;  
end;  
 

关键字:
:NEW 和:OLD使用方法和意义,new 只出现在insert和update时,old只出现在update和delete时。在insert时new表示新插入的行数据,update时new表示要替换的新数据、old表示要被更改的原来的数据行,delete时old表示要被删除的数据。
注意:
在触发器中不能使用commit。
分享到:
评论

相关推荐

    Oracle 9i Client (Oracle 9i 客户端) 简化版 (不安装Oracle客户端,也可以使用PLSQL Developer)

    Oracle 9i Client (Oracle 9i 客户端) 简化版 (不安装Oracle客户端,也可以使用PLSQL Developer 不用安装Oracle客户端也可以使用PLSQL Developer 绿色! 安全! 轻便! 可靠! 1、本软件可作为简单的Oracle9i客户端...

    oracle.jdbc.driver.oracledriver Oracle JDBC驱动包 ojdbc6

    Oracle JDBC驱动包是Oracle数据库与Java应用程序之间进行通信的关键组件,它使得Java程序员能够通过编写Java代码来操作Oracle数据库。标题中的"ojdbc6"指的是Oracle JDBC驱动的一个特定版本,适用于Java SE 6环境。...

    基于C#连接Oracle数据库Oracle.ManagedDataAccess

    首先,Oracle.ManagedDataAccess是Oracle公司提供的一个纯.NET框架的客户端驱动,它允许开发者在不安装Oracle客户端的情况下,直接与Oracle数据库进行交互。这个库包含了所有必要的组件,使得C#程序可以方便地执行...

    Python连接oracle工具cx_Oracle官方文档

    cx_Oracle是Python数据库API规范的实现,用于访问Oracle数据库。目前,该模块经过对Oracle客户端版本11.2、12.1和12.2以及Python版本2.7、3.4、3.5和3.6的测试。cx_Oracle遵循开源的BSD许可证,这表示用户可以自由地...

    OracleClient-19C Oracle客户端,包括windows和Linux

    Oracle Client是Oracle公司提供的数据库连接工具,用于与Oracle数据库服务器进行通信。19C是Oracle Database的一个版本,代表第19个主要版本。这个压缩包包含的Oracle Client适用于Windows和Linux操作系统,使得...

    oracle10G和oracle11G的OCI.dll

    oci.dll是Oracle Call Interface的缩写,它是Oracle数据库的一个核心组件,允许开发者使用各种编程语言与Oracle数据库进行交互。在Oracle 10G和11G版本中,oci.dll扮演了至关重要的角色,为应用程序提供了访问数据库...

    Mysql转Oracle软件 DBMover for Mysql to Oracle

    Dbmover for Mysql to Oracle 是高效的将Mysql导入到Oracle数据库的工具。 使用DBMover可以灵活定义Mysql和Oracle之间表和字段的对照关系,也可以在DBMover创建一个查询,把查询结果当作源表转入到Oracle中。 ...

    解决System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本

    标题中的“System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本”是一个常见的错误提示,它涉及到在.NET环境中使用Oracle数据库时遇到的问题。这个错误表明,当你试图在应用程序中使用System.Data....

    cx_Oracle使用手册

    cx_Oracle是Python编程语言中用于连接Oracle数据库的一个模块。该模块遵循Python数据库API规范,并且适用于Oracle 11.2和12.1版本,同时兼容Python 2.x和3.x版本。cx_Oracle模块通过使用Oracle客户端库来实现与...

    Oracle学习笔记 PDF

    ### Oracle学习笔记知识点详解 #### 一、Oracle简介 Oracle是一家知名的软件公司,以其数据库管理系统闻名全球。该公司成立于1977年,总部位于美国加利福尼亚州。Oracle不仅提供数据库解决方案,还涉及中间件、...

    利用python-oracledb库连接Oracledb数据库,使用示例

    python-oracledb的源码和使用示例代码, python-oracledb 1.0,适用于Python versions 3.6 through 3.10. Oracle Database; This directory contains samples for python-oracledb. 1. The schemas and SQL ...

    Oracle Instant Client 11.2.0.1.0 轻量级Oracle客户端

    Oracle Instant Client 11.2.0.1.0是轻量级Oracle客户端,用于连接访问Oracle 9i、10g、11g 11.2.0.1.0版本的Oracle数据库。 Oracle Instant Client11.2.0.1.0 安装程序包含OCI/ OCCI、JDBC-OCI SDK(软件开发工具...

    ODP.NET 方式链接oracle数据库的Oracle.ManagedDataAccess.dll文件取代Oracle.DataAccess.dll

    使用了,ODP.NET 方式链接数据库,只要把Oracle.ManagedDataAccess.dll引入取代以前的Oracle.DataAccess.dll即可。 这种方式也是oracle公司提供的,稳定性要比之前那种更好,而且也是免安装客户端的,目前还没测试...

    Oracle19c-Windows客户端

    Oracle 19c是Oracle数据库的一个重要版本,尤其在Windows平台上,它提供了全面的功能和优化,使得数据库管理和开发更为高效。以下将详细讲解Oracle 19c Windows客户端的关键知识点: 1. **Oracle Client**: Oracle...

    SqlDbx连接oracle

    首先,连接Oracle数据库通常需要Oracle客户端软件,但这里提到的“Sqldbx连接oracle,不用安装client”,意味着SqlDbx可能通过一种无需完整Oracle客户端的方式来实现连接。这种连接方式通常依赖于Oracle的Instant ...

    oracle客户端免安装版

    Oracle客户端免安装版,也被称为Oracle Instant Client,是Oracle公司提供的一种轻量级的数据库连接工具,无需完整的Oracle数据库服务器安装即可使用。它主要用于在不安装完整客户端的情况下,实现应用程序与Oracle...

    oracle经典书籍(Oracle 9i初学者指南.zip、Oracle专家高级编程.pdf、Effective+Oracle+by+Design.pdf)

    这里提到的三本书籍——"Oracle 9i初学者指南.zip"、"Oracle专家高级编程.pdf"以及"Effective Oracle by Design.pdf"都是Oracle学习者和专业开发者的宝贵资源。 "Oracle 9i初学者指南.zip":这是一本针对Oracle 9i...

    Oracle.ManagedDataAccess.dllC#连接Oracle10g,11g,12g所需的DLL

    Oracle.ManagedDataAccess.dll是Oracle公司为.NET开发者提供的一个托管数据访问组件,它允许C#等.NET语言直接与Oracle数据库进行交互,而无需在开发机器上安装完整的Oracle客户端。这个DLL文件是Oracle Data Access ...

    vb.net操作Oracle数据库增删改查以及存储过程调用1

    Password=tiger; ``` 其中,Provider 指定了 Oracle 客户端的提供者,Data Source 指定了 Oracle 数据库的实例,User Id 和 Password 指定了连接数据库的用户名和密码。 执行 SQL 语句 在连接 Oracle 数据库之后,...

    cx_Oracle离线安装包

    在IT行业中,数据库管理系统Oracle是企业级应用的重要组成部分,而Python作为流行的编程语言,常常用于与Oracle数据库进行交互。cx_Oracle是Python的一个扩展模块,它提供了与Oracle数据库的连接功能,使得Python...

Global site tag (gtag.js) - Google Analytics