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
分享到:
相关推荐
oracle12c程序连接时异常: ORA-01017: 用户名/口令无效; 登录被拒绝 的解决方案。
标题“IMP-00010:不是有效的导出文件,头部验证失败”涉及的是Oracle数据库导入(IMP)过程中遇到的一个常见错误。这个错误通常发生在尝试使用IMP工具从.dmp文件导入数据时,表明导入文件可能已损坏或不完整,导致...
您可能感兴趣的文章:常用的Oracle doc命令(收藏)Oracle 多行记录合并/连接/聚合字符串的几种方法Oracle中字符串连接的实现方法php连接oracle数据库及查询数据的方法plsql连接oracle数据库报ora 12154错
PL / SQL解析器 欢迎捐款,我对每一个帮助都很满意:) 概念 这将是一个多阶段解析器。这意味着,第一级仅解析一般结构。例如,它发现变量声明,但不检查定义的varchar2变量是否确实具有有效的字符串值。...
今天在项目中,使用Mybatis对oracle数据库进行操作的时候,报出ORA-00911: invalid character的错误,检查了一下SQL,发现都书写正确啊,复制到plsql上执行也都没问题,这什么原因呢? 注意:这里说的是用navicat...
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" 暗示了这个压缩包与PL/SQL(Oracle数据库的编程环境)以及Visual FoxPro(VFP)数据库系统有关,特别是涉及到在PL/SQL环境中通过ODBC(Open Database Connectivity)驱动程序访问DBF...
此工具的主要功能有:绿色,已破解,中文操作文档,附加dbatools插件(可用于扩展数据库表空间等,此功能经常使用,完全可保证),是学习oracle进行提高的必备工具,希望对学习oracle数据的朋友有所帮助。
在Oracle数据库操作中,"ORA-01480: STR 绑定值的结尾 Null 字符缺失"是一个常见的错误,通常与数据插入或更新时的格式问题有关。这个错误通常意味着在处理字符串数据时,Oracle无法找到预期的NULL终止符,这可能是...
plsqldev-trivadis-插件 Trivadis PL / SQL Cop的PL / SQL开发人员插件 如果您的PL / SQL Developer是x86,则需要将插件编译为x86,或者如果它是x64,则编译为x64。 您需要将插件放置在C:\ Program Files \ PLSQL ...
SQL,即结构化查询语言,主要分为三个类别:DML(数据操纵语言)、DDL(数据定义语言)和 DCL(数据控制语言)。 1. DML(数据操纵语言): DML 用于处理数据库中的数据,包括查询、插入、更新和删除操作。 - ...
### Oracle_PLSQL语言初级教程知识点概览 #### 一、PL/SQL语言基础 - **定义**: PL/SQL(Procedural Language for SQL)是一种专为Oracle数据库设计的过程化编程语言,它允许开发者编写复杂的数据库应用程序。 - **...
oracle中表空间、权限、角色、用户的总结,其中包括表空间的建立,权限的配置,角色的生成和用户的挂接
plsqldev-9.0.zip
PLSQL Developer-dba
PLSQL中的SQL语句可以直接执行DML(数据操纵语言)操作,如INSERT、UPDATE、DELETE,也可以执行DDL(数据定义语言)来创建或修改数据库对象。 2. **Oracle存储过程**: 存储过程是一组预先编译好的PLSQL语句,可以...
plsqldev-12.汉化版 Product Code:4t46t6vydkvsxekkvf3fjnpzy5wbuhphqz Serial Number:601769 password:xs374ca
PLSQL单元测试 该gem旨在用于测试PLSQL代码。 大多数测试框架是由Test :: Unit提供的,而这个gem仅添加了一些方便的方法,这些方法在单元测试PLSQL代码时非常有用。 依存关系 此宝石取决于: 为Oracle提供JDBC接口 ...
在数据库编程领域,TSQL(Transact-SQL)和PLSQL(Procedural Language/SQL)是两种广泛使用的SQL方言,分别由微软的SQL Server和甲骨文的Oracle数据库系统支持。它们都提供了丰富的数学函数和操作来处理数值计算,...
PLSQL Developer是一款强大的Oracle数据库管理工具,主要用于编写、调试、执行和管理PL/SQL代码。这个"plsql1504-x64"安装包是针对64位操作系统的版本,1504可能指的是软件的特定版本号,通常包含了各种性能改进和新...