oracle 触发器 for each row 理解

2023-10-27

看到了触发器 中有个 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;


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

oracle 触发器 for each row 理解 的相关文章

随机推荐

  • Python学习笔记(CSDN)- 1 - Python简介

    按照CSDN上的课程进行学习 Python简介 预备知识 CSDNPython入门技能树 先是附上这门课的思维导图 目录 1 Python定义 2 Python发展史 2 1 Python的发展 2 2 Python的版本更新 2 3 Py
  • JavaScript基础:Iterator概念及用法

    一 由来及意义 Javascript中表示 集合 的数据结构 主要是 Array Object Map Set 这四种数据集合 除此之外 它们相互之间还可以组合使用 例如Array的成员是Map Map的成员是Object等 因此Javas
  • 一分钟学会gitee上传文件到仓库

    在网上Gitee准备 1 1 注册登录 gitee 1 2 在gitee上创建仓库 点击gitee头像旁边的 选择 新建仓库 1 3 开始新建 然后点击 创建 仓库名称 最好都用英文 这里方便讲解就不勾选后面的内容了 接着直接点击 创建 就
  • Python迭代器

    迭代器是在Python2 2中被加入的 它为类序列对象提供了一个类序列的接口 有了迭代器可以迭代一个不是序列的对象 因为它表现出了序列的行为 关于Python中的迭代器 有几个比较容易混淆的概念 可迭代对象 iterable 迭代器 ite
  • 《服务器无状态设计:为什么&如何实现无状态API?》

    博主猫头虎 带您 Go to New World 博客首页 猫头虎的博客 面试题大全专栏 文章图文并茂 生动形象 简单易学 欢迎大家来踩踩 IDEA开发秘籍专栏 学会IDEA常用操作 工作效率翻倍 100天精通Golang 基础入门篇 学会
  • python3 多线程_Python3多线程及线程池实现教程

    一 说明 多线程这个东西 感觉一直以来都是用一次就要学一次 今天需要将之前写的脚本改成线程池的形式又学习了一轮 为了以后方便在这直接记下来 二 多线程实现 2 1 多线程的基本实现 importthreadingimporttimeimpo
  • 编写程序,根据用户输入的两位数,反向显示出该数中的数字。例如,用户输入48,那么程序输出84。(C语言)

    include
  • Linux开机满进度条卡死问题

    Linux开机满进度条卡死问题 此问题意外发生 原本好好的 再次开机就发现启动时进度条很慢 最后满条卡住 但ssh方式连接还能进去 也就是开机了 但linux界面卡住了 页面如下 但我们使用xshell进行ssh链接还是可以用的 但进度条卡
  • Ubuntu---pycharm卸载

    Ubuntu卸载pycharm 1 在 Linux 上卸载 snap 包 在商店中直接下载 专业版 sudo snap remove pycharm professional 社区版 sudo snap remove pycharm com
  • tomcat能作为网站的服务器不,tomcat的作用是什么_网站服务器运行维护,tomcat

    Linux 如何查看root密码 网站服务器运行维护 Linux不能查看root密码 因为root密码都是密文存储的 而密码设计的一个目标就是反推解密出来的可能性尽量小 如果需要修改密码 可以通过进入单用户模式下 将密码进行修改 修改完成后
  • SlideLive:提供小清新风格PPT模板下载

    简介 在学习和工作中 有时需要制作PPT 本文主要介绍如何从SlideLive平台下载小清新风格PPT模板 其中 SlideLive是一款PPT在线播放和分享的网站 该网站已收录大量的PPT模板 包括各种风格PPT模板和PPT图表 下载地址
  • 4款不错的UI设计软件推荐

    俗话说 如果工人想做好工作 他们必须首先磨利他们的工具 高质量的UI设计软件将使设计事半功倍 近年来 UI设计软件的逐渐多样化 让一些需要使用UI设计软件的小伙伴不知道如何选择 我整理了四款优秀的免费UI设计软件 别错过了 1 即时设计 即
  • 在子组件中使用Echarts图表无法刷新显示的问题(解决:子组件刷新)

    场景问题 在项目中 子组件中使用了Echarts的图表 图表的数据需要从父组件传入Id来进行查询 墒情仪与气象站相同的结构 当切换设备时 图表无法回显 父子组件传值正常 解决心路历程 1 我将两种设备传值的Id分开传递 处理无果 2 给子组
  • Linux下操作Docker(四):导入导出

    docker镜像的导出和导入 显示当前docker中的镜像 docker images 镜像列表如下 REPOSITORY TAG IMAGE ID CREATED SIZE pointsift latest 90b2ef439b40 2
  • java循环判断的使用

    程序的结构 一般来说程序的结构包含有下面三种 1 顺序结构 2 选择结构 3 循环结构 顺序结构 程序至上而下逐行执行 一条语句执行完之后继续执行下一条语句一直到程序的末尾 选择结构 是根据条件的成立与否 再决定要执行哪些语句的一种结构 循
  • 原生js实现简单智能关键词搜索功能

    现在很多网站都有智能搜索功能 它能根据用户的输入自动提示出需要补全的数据 方便用户的查询 下面我们用JavaScript来简单实现它 html部分 div div
  • STM32学习笔记3:KEIL5中使用ST-Link烧录调试STM32芯片的步骤

    一 开发板连接ST LINK ST LINK连接电脑 操作细节点击这里 二 配置debug选项 点击魔术棒 debug use 项选择 ST Link Debugger 再点击 Setting 这边会显示设备信息 如果显示没有设备 需要检查
  • 数字电路设计之OpenRISC(一)

    ARM PowerPC等商用IP核授权费价格较高 所以开源处理器越来越受到大家的关注 开源处理器比如OpenRISC NIOS II LEON2等 这里我会介绍OpenRISC的优点 一 指令集可扩展 二 添加专用的硬件协处理单元 一般来说
  • Kettle(一) 下载及环境部署

    1 kettle下载地址 kettle资源 https download csdn net download kingo0 87360222 JDK资源 LinuxJDK1 8安装包 jdk1 8安装包 Java文档类资源 CSDN下载 2
  • oracle 触发器 for each row 理解

    看到了触发器 中有个 for each row 不是很明白就查了查资料 因为只是简单研究 就先写总结一下 触发器的一般语法 CREATE OR REPLACE TIGGER 触发器名 触发时间 触发事件 ON 表名 FOR EACH ROW