`

oracle触发器使用笔记(原创)

阅读更多
语法规则:
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 代码
  1. create or replace trigger wf_tri_user_list before insert or update or delete on user_list   
  2. for each row   
  3. declare  
  4.    uid varchar2(10); useq varchar2(10); asql varchar2(200); namea varchar2(200); nameb varchar2(200);   
  5. begin  
  6.    namea:=NULL;   
  7.    nameb:=NULL;   
  8.    if inserting then  
  9.       insert into wflow.bpm_org_user(userid,username,diaplayname,seq) values(:NEW.user_id,:NEW.user_name,:NEW.user_realname,:NEW.user_id);   
  10.       dbms_output.put_line('insert trigger is chufale .....');   
  11.         
  12.    end if;   
  13.    if updating then  
  14.       if (:NEW.user_name<>:OLD.user_name) and (:NEW.user_realname<>:OLD.user_realname) then  
  15.          namea:=:NEW.user_name;   
  16.          nameb:=:NEW.user_realname;   
  17.          asql:='update wflow.bpm_org_user set diaplayname=:1 where username=:2';   
  18.          execute immediate asql using namea,nameb;   
  19.       else  
  20.         if :NEW.user_name<>:OLD.user_name then  
  21.           namea:=:NEW.user_name;   
  22.           asql:='update wflow.bpm_org_user set user_name=:1 where username=:2';   
  23.           execute immediate asql using namea;   
  24.         else  
  25.           if :NEW.user_realname<>:OLD.user_realname then  
  26.             nameb:=:NEW.user_realname;   
  27.             asql:='update wflow.bpm_org_user set diaplayname=:1 where username=:2';   
  28.             execute immediate asql using nameb,:OLD.user_id;   
  29.           end if;   
  30.         end if;   
  31.       end if;   
  32.    end if;   
  33.    if deleting then  
  34.       update wflow.bpm_org_jobusers set userid = 0 where :OLD.user_id =userid and parentid=-1;   
  35.       delete from wflow.bpm_org_jobusers where userid = :OLD.user_id;   
  36.       delete wflow.bpm_org_user where userid=:OLD.user_id;   
  37.    end if;   
  38.    commit;   
  39. end;   
  40.   

 

关键字:

:NEW 和:OLD使用方法和意义,new 只出现在insert和update时,old只出现在update和delete时。在insert时new表示新插入的行数据,update时new表示要替换的新数据、old表示要被更改的原来的数据行,delete时old表示要被删除的数据。

注意:

在触发器中不能使用commit。

分享到:
评论
3 楼 huigang10086 2013-08-16  
应该不能写commit吧。
2 楼 wst0350 2011-09-07  
谢谢,这是我需要的
1 楼 小嘴冰凉 2009-08-31  
触发器中是可以用commit的,用自治事务

相关推荐

    oracle触发器使用笔记

    总之,Oracle触发器是一种强大的工具,可以帮助开发人员在数据库层面上实现复杂的业务逻辑和数据管理,但需要注意的是,过度使用触发器可能会导致性能问题,因此在设计数据库架构时应谨慎考虑其使用。

    Oracle 触发器的使用小结

    - Oracle触发器的学习笔记和实例详解提供了更深入的触发器使用技巧和案例。 - 主键自增表的创建以及触发器的应用,展示了如何在Oracle中实现类似MySQL的自增主键。 - 监控表变动的触发器示例,说明了如何利用...

    oracle笔记触发器

    oracle笔记触发器,有具体的触发器代码案例,触发器的知识笔记!

    oracle笔记(存储过程函数触发器游标流程控制等)

    这份"oracle笔记(存储过程函数触发器游标流程控制等)"涵盖了Oracle数据库管理中的关键知识点,包括但不限于以下几个方面: 1. **存储过程与函数**:存储过程是预编译的SQL语句集合,用于执行特定任务。它们可以提高...

    李兴华Oracle全部笔记

    其次,笔记可能会深入到Oracle的高级特性,比如PL/SQL编程,这是一种专为Oracle设计的过程化编程语言,用于创建存储过程、函数、触发器等。此外,可能还会涵盖数据库事务处理、并发控制和锁机制,这些都是保证数据...

    oracle笔记+触发器

    oralce数据库+触发器笔记等资料,资料绝对不错,是培训机构里面的内部笔记,值得拥有

    Oracle数据库课堂笔记

    以下是对Oracle数据库课堂笔记的详细解析,涵盖了从基础到进阶的重要知识点。 第一讲:Oracle简介 Oracle数据库是由甲骨文公司开发的,提供了一整套数据存储、管理和检索解决方案。它支持多种操作系统和硬件平台,...

    oracle_sql笔记

    这篇笔记主要涵盖了Oracle SQL的基础知识、高级特性和实际应用技巧。 一、基础SQL语法 Oracle SQL遵循标准的SQL语法,包括SELECT、INSERT、UPDATE、DELETE四大语句。用于查询数据的基本结构是SELECT字段列表FROM...

    ORACLE经典学习笔记

    ### ORACLE经典学习笔记知识点概览 #### 第一章 ORACLE 命令 本章节主要介绍了Oracle数据库中常用的命令及其使用方法。 1. **查看参数文件**: `Desc v$parameter` - 这个命令用于查看Oracle的参数文件信息,通过...

    Oracle 超强学习笔记

    通过"Oracle超强学习笔记"的深入学习,你将能够全面掌握Oracle数据库的使用和管理,无论你是初学者还是经验丰富的专业人士,都能从中受益匪浅。在实际操作中不断实践,逐步提升你的Oracle技术水平,成为一名优秀的...

    oracle学习笔记(从入门到精通)

    压缩包主要包括15个文档,主要是本人学习oracle过程中的笔记,希望对你有帮助:主要文档如下: 01-常用命令.txt 02-表空间建表.txt 03-基本查询语句学习笔记.txt 04-高级查询语句学习笔记.txt 05-锁和表分区学习...

    韩顺平Oracle教学笔记.docx

    韩顺平Oracle数据库教程笔记涵盖了Oracle数据库的基础知识和高级技术,涵盖了数据类型、查询语句、条件语句、排序语句、分组语句、联结语句、子查询、数据操作、视图、索引、存储过程、触发器、数据库设计、数据库...

    韩顺平oracle课堂笔记

    除了上述重点,笔记可能还包含了Oracle的其他重要概念,如索引、触发器、视图、事务管理、备份恢复策略、性能优化技巧等。索引能显著提升查询速度,但过度使用也可能导致写操作变慢;触发器用于在特定事件发生时自动...

    oracle培训笔记2

    - 其他天数的笔记可能包括存储过程、触发器、索引优化、备份恢复策略等内容。 通过这样的培训,参与者将能够全面掌握Oracle数据库的使用,从基本操作到复杂的数据库设计和性能优化。不断学习和实践是提升Oracle技能...

    oracle培训老师笔记

    在Oracle数据库管理方面,笔记可能涵盖了表空间和段的管理,如何进行数据导入导出,以及使用RMAN(Recovery Manager)进行备份和恢复操作。学习者还将接触到性能优化,如使用EXPLAIN PLAN分析查询执行计划,调整SQL...

    Oracle DBA学习笔记

    Oracle DBA学习笔记中包含了关于Oracle数据库的基础知识和操作技能,内容涵盖了Oracle的使用、Select基本操作和sqlplus命令等方面。 首先,Oracle数据库笔记提供了登录Oracle数据库的方法,包括使用管理员账户登录...

    oracle18天笔记

    读者会学习如何使用SQL进行数据查询、插入、更新和删除,以及如何创建视图、索引和触发器等高级概念。这部分内容是数据库管理员日常工作的基础。 此外,笔记还可能涉及PL/SQL,Oracle的编程语言,用于编写存储过程...

    Oracle老师教学笔记,很详细.

    7. **PL/SQL编程**:Oracle特有的PL/SQL是一种结合了SQL和过程性编程的语言,用于编写存储过程、函数和触发器。笔记可能涉及基本的PL/SQL语法,如声明变量、控制流程(IF-THEN-ELSE、WHILE、FOR循环)、异常处理等。...

Global site tag (gtag.js) - Google Analytics