看到了触发器 中有个 for each row 不是很明白就查了查资料,因为只是简单研究,就先写总结一下。

触发器的一般语法:

CREATE [OR REPLACE] TIGGER 触发器名 触发时间 触发事件

ON 表名

[FOR EACH ROW]

BEGIN

PL/SQL 语句;

END;

CREATE [OR REPLACE] TRIGGER trigger_name
{BEFORE | AFTER }
{INSERT | DELETE | UPDATE [OF column [, column …]]}
[OR {INSERT | DELETE | UPDATE [OF column [, column …]]}...]
ON [schema.]table_name | [schema.]view_name 
[REFERENCING {OLD [AS] old | NEW [AS] new| PARENT as parent}]
[FOR EACH ROW ]
[WHEN condition]
PL/SQL_BLOCK | CALL procedure_name;

for each row 的意思是:这个触发器是行触发器。

行触发器和语句触发器的区别:

1、行触发器要求当一个DML语句操作影响数据库中的多行数据时,对于其中的每个数据行,只要它们符合触发约束条件,均激活一次触发器

2、语句触发器将整个语句操作作为触发事件,当它符合约束条件时,激活一次触发器

3、当省略FOR EACH ROW 选项时,BEFORE 和AFTER 触发器为语句触发器,而INSTEAD OF 触发器则只能为行触发器

例子:

--限制更新操作

create or replace TRIGGER L_TEST_TRI

BEFORE UPDATE OF YEAR ON L_TEST

FOR EACH ROW

DECLARE

BEGIN

IF :NEW.YEAR<:OLD.YEAR THEN

RAISE_APPLICATION_ERROR(-20002,'更新后的年份比更新前小');

END IF;

END;

--在非规定事件内插入数据

create or replace TRIGGER L_TEST_TRI

BEFORE INSERT ON L_TEST

DECLARE

BEGIN

IF TO_CHAR(SYSDATE,'DAY') IN ('星期四','星期六','星期日')

OR TO_NUMBER(TO_CHAR(SYSDATE,'HH24')) NOT BETWEEN 8 AND 24 THEN

RAISE_APPLICATION_ERROR(-20000, '不能在规定事件之外插入数据');

END IF;

END;

oracle 触发器 for each row 理解相关推荐

  1. mysql 触发器 for each row 理解_“for each row”如何在mysql中的触发器中工作?

    FOR EACH ROW表示每个匹配行的更新或删除. 除非查询中有where条件,否则触发器主体不会遍历整个表数据. 下面演示了一个工作示例: 创建样本表: drop table if exists ...

  2. mysql 触发器 for each row 理解_MySQL触发器中的“ FOR EACH ROW”如何工作?

    实际上," FOR EACH ROW"意味着每个匹配的行都将被更新或删除.换句话说,我们可以说触发器没有应用于每一行,它只是说要为每个受影响的表行执行触发器主体.我们可以通过以下示 ...

  3. SQL server与Oracle触发器的创建与使用

    SQL Server 1创建触发器 GO BEGIN IF (object_id('WMY', 'tr') is not null) DROP trigger WMY END; GO CREATE T ...

  4. 【database】oracle触发器基础

    一.oracle触发器基本语法 CREATE [OR REPLACE] TRIGGER trigger_name {BEFORE | AFTER } {INSERT | DELETE | UPDATE ...

  5. oracle触发器判断空值,oracle触发器加条件判断、dblink

    --新增基站同步给电池组信息 create or replace trigger a_b_test after insert or update or delete on BJLT.BASESTATI ...

  6. Oracle 触发器调用存储过程|转||待研究|

    Oracle触发器调用存储过程资料收集整理 触发器:Trigger 存储过程:Stored Procedure // ******************** 收集1 **************** ...

  7. oracle触发器高级教程

    [转自]http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/statements_7004.htm#i2153503 CREA ...

  8. oracle行级的触发器,Oracle触发器Trigger2行级

    create table trigger_t2( id int, name varchar(30), age int ); /* --创建一个before update的触发器-控制每一行,行级 -- ...

  9. oracle触发器 select into,Oracle触发器中selectinto报错no_data_found异常处理

    Oracle触发器中select into 报错no_data_found异常处理 红色部分为对查询不到数据异常的处理 create or replace trigger TIG_MONITOR_AL ...

最新文章

  1. eclipse java 7_在Eclipse中编程Java 7
  2. UA MATH577 逻辑与可计算性1 递归函数
  3. VS Code Remote,在服务器上开发程序,开启全新开发模式
  4. WinAPI: GetUserName - 获取当前用户名
  5. 【机器视觉】 return算子
  6. 一头扎进Node(三) - File System
  7. [Vue warn]: Invalid prop: custom validator check failed for prop xxx.问题
  8. 计算机卡在无法显示网页,我的电脑上网上银行一直“无法显示网页”
  9. 【转】mysql触发器的实战(触发器执行失败,sql会回滚吗)
  10. codeforces 676C (尺取法)
  11. 软件开发项目计划书编写说明
  12. ndows优化大师 免费版,Windows优化大师
  13. 谷歌浏览器使用复制的功能
  14. 台式计算机开机后黑屏,电脑开机显示黑屏有关的问题与解决方法
  15. 获得中国行政区划接口
  16. 欧标插头EN50075测试项目
  17. DPU — 完全可编程网络
  18. 经典重写alert方法
  19. 智慧工地安全施工实时监测系统解决方案
  20. PHP代码审计--百家CMS4.1.4项目实战(下)

热门文章

  1. vmagent入门(一)
  2. 985院校计算机保研er如何冲刺清北?
  3. Google Earth Engine (GEE)——如何统计指定区域的像素数量和总量
  4. Oracle中SQL查询字段值为空时,指定默认值
  5. 文件同步详细操作(NFS,rsync)
  6. s_gets()函数解析
  7. 10 个开源免费的电子商务平台
  8. 智能车大赛ROS仿真和基于yolo识别物体(仿真实现2019年室外光电创意组比赛)
  9. echarts饼图属性配置-中间展示总和
  10. 【NiFi系列】1-基本介绍