语句级触发器在整条DML语句执行完毕后触发一次,不依赖行数;关键区别在于它不可访问:NEW/:OLD,仅能用INSERTING/UPDATING/DELETING和SQL%ROWCOUNT,且必须显式声明FOR EACH STATEMENT。什么是语句级触发器:和行级触发器的关键区别语句级触发器在整条 insert、update 或 delete 语句执行完毕后触发一次,不管它影响了多少行;而行级触发器对每一行都触发一次。如果你只想记录“谁在什么时候执行了哪条修改语句”,而不是“哪几行被改了”,就必须用语句级——否则日志会爆炸式膨胀,还可能因 :new/:old 在语句级不可用而报 ora-04082: reference to a column in a trigger is not allowed。常见错误现象:– 在 BEFORE STATEMENT 里写 IF :NEW.id IS NOT NULL THEN ...– 把本该用 AFTER STATEMENT 记录操作元信息(如 USER、SYSDATE、SQL%ROWCOUNT)的逻辑,错放到行级触发器里语句级触发器中不能访问 :NEW 和 :OLD,只可读 INSERTING / UPDATING / DELETING 布尔变量想记录影响行数?用 SQL%ROWCOUNT,但它必须在触发器体中立即读取(不能放在函数调用后再查)Oracle 12c+ 支持 DBMS_UTILITY.FORMAT_CALL_STACK,但语句级触发器里拿不到调用 SQL 文本,别白费劲怎么写一个最小可用的语句级审计触发器核心是声明 FOR EACH STATEMENT,并用 AFTER 阶段保证操作已提交(或回滚)完成,日志才落盘。别用 BEFORE——它无法反映最终是否成功,且容易因异常中断导致日志缺失。示例:监控 orders 表的 DML 操作CREATE OR REPLACE TRIGGER log_orders_statement AFTER INSERT OR UPDATE OR DELETE ON orders FOR EACH STATEMENTDECLARE v_op VARCHAR2(10); v_rows NUMBER := SQL%ROWCOUNT;BEGIN IF INSERTING THEN v_op := 'INSERT'; ELSIF UPDATING THEN v_op := 'UPDATE'; ELSIF DELETING THEN v_op := 'DELETE'; END IF; INSERT INTO audit_log (table_name, operation, op_user, op_time, rows_affected) VALUES ('orders', v_op, USER, SYSDATE, v_rows);END;必须显式声明 FOR EACH STATEMENT,漏写就默认变成行级SQL%ROWCOUNT 在触发器体第一行就读,避免被后续 INSERT 覆盖日志表 audit_log 的 rows_affected 字段建议用 NUMBER,别用 VARCHAR2 存数字字符串为什么触发器没生效:权限与启用状态检查清单即使语法全对,语句级触发器也可能静默失效。最常被忽略的是:触发器本身被禁用,或者创建者没有 CREATE ANY TRIGGER 权限导致依赖对象(如日志表)不可见。 跃问 跃问是由阶跃星辰开发的免费AI智能问答助手,随时帮你智能搜索、高效阅读、识图理解、和你畅聊感兴趣的话题。
如何创建语句级触发器_表级操作监控与日志记录实现
张小明
前端开发工程师
UnrealPakViewer:从黑盒到透明化,深度解析UE4 Pak文件管理技术突破
UnrealPakViewer:从黑盒到透明化,深度解析UE4 Pak文件管理技术突破 【免费下载链接】UnrealPakViewer 查看 UE4 Pak 文件的图形化工具,支持 UE4 pak/ucas 文件 项目地址: https://gitcode.com/gh_mirrors/un/UnrealPakViewer 在Unreal…
MediaPipe TouchDesigner插件:实时视觉计算的创意革命
MediaPipe TouchDesigner插件:实时视觉计算的创意革命 【免费下载链接】mediapipe-touchdesigner GPU Accelerated MediaPipe Plugin for TouchDesigner 项目地址: https://gitcode.com/gh_mirrors/me/mediapipe-touchdesigner 当创意编程遇上机器学习&#…
企业网盘选型指南:从这5个维度考察,避免踩坑
维度一、安全性:数据防护是底层生命线,合规背书是准入门槛 普通的“账号密码”鉴权机制早已无法抵御现代安全威胁,企业级产品必须在系统架构底层建立安全沙箱。 🔒 硬性合规与资质壁垒 在SaaS选型中,不能只听宣传&am…
51单片机超声波测速
目录 具体实现功能 设计介绍 51单片机简介 资料内容 原理图和PCB(AD19) 程序(Keil5) 全部资料 资料获取 具体实现功能 由51单片机LCD1602液晶超声波模块24C02芯片按键蜂鸣器等构成。 具体功能: (1…
开发团队管理化技术自组织与跨功能协作
开发团队管理中的技术自组织与跨功能协作 在快速变化的数字化时代,开发团队的高效协作成为企业竞争力的关键。传统的层级管理模式逐渐被更灵活的自组织团队和跨功能协作所替代。技术自组织强调团队成员的自主决策与动态调整,而跨功能协作则打破部门壁垒…
【Python图像处理】29 视频图像处理:帧处理与运动检测
摘要:本文深入讲解视频图像处理的原理与实现方法,详细介绍视频读写、帧处理、运动检测、光流计算等核心技术。文章通过大量综合性代码示例,演示各种视频处理算法的实现,并介绍如何使用GPT-5.4辅助编写视频处理代码。由于国内无法访…