`
tanglei198577
  • 浏览: 60003 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

plsql learning - six:DML trigger

阅读更多

The trigger triggered when DML sentences executed,the steps are:

1)If there are before-triggers before the sentence,run these triggers.

2)For every row of the sentences that involved:

   a.if there are before-triggers for each row,run these trigger.

   b.execute this sentence

   c.if there are after--triggers for each row,run these trigger.

3)If there are after-triggers after the sentence,run these triggers.

Here is the example:

create sequence trig_seq start with 1 increment by 1;

create or replace package TrigPackage as
  v_Counter number;
end TrigPackage;

create or replace trigger ClassesBStatement
  before update on classes
begin
  TrigPackage.v_Counter := 0;
  insert into temp_table(num_col,char_col)
  values(trig_seq.nextval,'Before Statement: counter = '||TrigPackage.v_Counter);
  --increment for the next trigger
  TrigPackage.v_Counter := TrigPackage.v_Counter + 1;
end ClassesBStatement;

create or replace trigger ClassesAStatement1
  after update on classes
begin
  --TrigPackage.v_Counter := 0;
  insert into temp_table(num_col,char_col)
  values(trig_seq.nextval,'After Statement1: counter = '||TrigPackage.v_Counter);
  TrigPackage.v_Counter := TrigPackage.v_Counter + 1;
end ClassesAStatement1;

create or replace trigger ClassesAStatement2
  after update on classes
begin
  --TrigPackage.v_Counter := 0;
  insert into temp_table(num_col,char_col)
  values(trig_seq.nextval,'After Statement2: counter = '||TrigPackage.v_Counter);
  TrigPackage.v_Counter := TrigPackage.v_Counter + 1;
end ClassesAStatement2;

create or replace trigger ClassesBRow1
  before update on classes
  for each row
begin
  --TrigPackage.v_Counter := 0;
  insert into temp_table(num_col,char_col)
  values(trig_seq.nextval,'Before Row1: counter = '||TrigPackage.v_Counter);
  TrigPackage.v_Counter := TrigPackage.v_Counter + 1;
end ClassesBRow1;

create or replace trigger ClassesBRow2
  before update on classes
  for each row
begin
  --TrigPackage.v_Counter := 0;
  insert into temp_table(num_col,char_col)
  values(trig_seq.nextval,'Before Row2: counter = '||TrigPackage.v_Counter);
  TrigPackage.v_Counter := TrigPackage.v_Counter + 1;
end ClassesBRow2;

create or replace trigger ClassesBRow3
  before update on classes
  for each row
begin
  --TrigPackage.v_Counter := 0;
  insert into temp_table(num_col,char_col)
  values(trig_seq.nextval,'Before Row3: counter = '||TrigPackage.v_Counter);
  TrigPackage.v_Counter := TrigPackage.v_Counter + 1;
end ClassesBRow3;

create or replace trigger ClassesARow
  after update on classes
  for each row
begin
  --TrigPackage.v_Counter := 0;
  insert into temp_table(num_col,char_col)
  values(trig_seq.nextval,'After Row: counter = '||TrigPackage.v_Counter);
  TrigPackage.v_Counter := TrigPackage.v_Counter + 1;
end ClassesARow;



 

then test it by followed code:

update classes c set c.num_credits = 4 where c.department in ('HIS','CS')
select * from temp_table order by num_col

 

the result is:

  1 Before Statement: counter = 0
2 Before Row3: counter = 1
3 Before Row2: counter = 2
4 Before Row1: counter = 3
5 After Row: counter = 4
6 Before Row3: counter = 5
7 Before Row2: counter = 6
8 Before Row1: counter = 7
9 After Row: counter = 8
10 Before Row3: counter = 9
11 Before Row2: counter = 10
12 Before Row1: counter = 11
13 After Row: counter = 12
14 Before Row3: counter = 13
15 Before Row2: counter = 14
16 Before Row1: counter = 15
17 After Row: counter = 16
18 After Statement2: counter = 17
19 After Statement1: counter = 18

0
0
分享到:
评论

相关推荐

    oracle12c ORA-01017: 用户名/口令无效; 登录被拒绝 解决方案

    oracle12c程序连接时异常: ORA-01017: 用户名/口令无效; 登录被拒绝 的解决方案。

    IMP-00010:不是有效的导出文件,头部验证失败

    标题“IMP-00010:不是有效的导出文件,头部验证失败”涉及的是Oracle数据库导入(IMP)过程中遇到的一个常见错误。这个错误通常发生在尝试使用IMP工具从.dmp文件导入数据时,表明导入文件可能已损坏或不完整,导致...

    oracle远程连接服务器出现 ORA-12170 TNS:连接超时 解决办法

    您可能感兴趣的文章:常用的Oracle doc命令(收藏)Oracle 多行记录合并/连接/聚合字符串的几种方法Oracle中字符串连接的实现方法php连接oracle数据库及查询数据的方法plsql连接oracle数据库报ora 12154错

    plsql-parser:用js编写的Oracle PLSQL解析器

    PL / SQL解析器 欢迎捐款,我对每一个帮助都很满意:) 概念 这将是一个多阶段解析器。这意味着,第一级仅解析一般结构。例如,它发现变量声明,但不检查定义的varchar2变量是否确实具有有效的字符串值。...

    Mybatis出现ORA-00911: invalid character的解决办法

    今天在项目中,使用Mybatis对oracle数据库进行操作的时候,报出ORA-00911: invalid character的错误,检查了一下SQL,发现都书写正确啊,复制到plsql上执行也都没问题,这什么原因呢? 注意:这里说的是用navicat...

    PL/SQL登录Oracle数据库报错ORA-12154:TNS:无法解析指定的连接标识符已解决(本地未安装Oracle需要连接服务器上的)

    ORA-12154:TNS:无法解析指定的连接标识符 ORA-12154:TNS:无监听程序 ...E:\PLSQL Developer(64)\instantclient_11_2 配置环境变量就是为了让PL/SQL Developer打开时加载到tnsnames.ora文件的内容 配置pl/sql的Datab

    plsql-vf-dbfodbc.rar

    标题 "plsql-vf-dbfodbc.rar" 暗示了这个压缩包与PL/SQL(Oracle数据库的编程环境)以及Visual FoxPro(VFP)数据库系统有关,特别是涉及到在PL/SQL环境中通过ODBC(Open Database Connectivity)驱动程序访问DBF...

    plsql8.0.3.1510绿色破解版(内含DBAtools)

    此工具的主要功能有:绿色,已破解,中文操作文档,附加dbatools插件(可用于扩展数据库表空间等,此功能经常使用,完全可保证),是学习oracle进行提高的必备工具,希望对学习oracle数据的朋友有所帮助。

    ORA-01480STR 绑定值的结尾 Null字符缺失 的问题原因及解决办法

    在Oracle数据库操作中,"ORA-01480: STR 绑定值的结尾 Null 字符缺失"是一个常见的错误,通常与数据插入或更新时的格式问题有关。这个错误通常意味着在处理字符串数据时,Oracle无法找到预期的NULL终止符,这可能是...

    plsqldev-trivadis-plugin:Trivadis PLSQL Cop的PLSQL Developer插件

    plsqldev-trivadis-插件 Trivadis PL / SQL Cop的PL / SQL开发人员插件 如果您的PL / SQL Developer是x86,则需要将插件编译为x86,或者如果它是x64,则编译为x64。 您需要将插件放置在C:\ Program Files \ PLSQL ...

    Oracle SQL & PLSQL学习笔记

    SQL,即结构化查询语言,主要分为三个类别:DML(数据操纵语言)、DDL(数据定义语言)和 DCL(数据控制语言)。 1. DML(数据操纵语言): DML 用于处理数据库中的数据,包括查询、插入、更新和删除操作。 - ...

    Oracle_PLSQL语言初级教程.pdf

    ### Oracle_PLSQL语言初级教程知识点概览 #### 一、PL/SQL语言基础 - **定义**: PL/SQL(Procedural Language for SQL)是一种专为Oracle数据库设计的过程化编程语言,它允许开发者编写复杂的数据库应用程序。 - **...

    oracle中表空间、权限、角色、用户的总结

    oracle中表空间、权限、角色、用户的总结,其中包括表空间的建立,权限的配置,角色的生成和用户的挂接

    plsqldev-9.0

    plsqldev-9.0.zip

    PLSQL Developer-dba

    PLSQL Developer-dba

    plsql资料--plsql资料

    PLSQL中的SQL语句可以直接执行DML(数据操纵语言)操作,如INSERT、UPDATE、DELETE,也可以执行DDL(数据定义语言)来创建或修改数据库对象。 2. **Oracle存储过程**: 存储过程是一组预先编译好的PLSQL语句,可以...

    plsqldev-12.汉化版

    plsqldev-12.汉化版 Product Code:4t46t6vydkvsxekkvf3fjnpzy5wbuhphqz Serial Number:601769 password:xs374ca

    plsql-unit-test:猴子补丁测试

    PLSQL单元测试 该gem旨在用于测试PLSQL代码。 大多数测试框架是由Test :: Unit提供的,而这个gem仅添加了一些方便的方法,这些方法在单元测试PLSQL代码时非常有用。 依存关系 此宝石取决于: 为Oracle提供JDBC接口 ...

    TSQL与PLSQL比较

    在数据库编程领域,TSQL(Transact-SQL)和PLSQL(Procedural Language/SQL)是两种广泛使用的SQL方言,分别由微软的SQL Server和甲骨文的Oracle数据库系统支持。它们都提供了丰富的数学函数和操作来处理数值计算,...

    plsql1504-x64 安装包

    PLSQL Developer是一款强大的Oracle数据库管理工具,主要用于编写、调试、执行和管理PL/SQL代码。这个"plsql1504-x64"安装包是针对64位操作系统的版本,1504可能指的是软件的特定版本号,通常包含了各种性能改进和新...

Global site tag (gtag.js) - Google Analytics