plsql 触发器介绍 语句级别触发器、行级别触发器。
/* 分类:1、DDL触发器执行create,alter,drop操作时,会激活的触发器2、DML触发器执行增、删除、修改时,激活的触发器3、系统事件触发器执行特定的系统事件时(启动、加载、登录、退出) 构成:1、触发事件:会引起触发器执行的操作;DDL操作,DML操作,系统事件;2、触发时间:before ,after, instead of:替代3、触发条件:where 条件4、触发对象:表、视图、数据库对象5、触发频率:语句级别(表级别):执行一次,行级别:for each row :满足条件的每一行操作都会激活触发器;6、触发操作:触发器中执行的操作;*/ -- 1、语句级别的触发器。(执行一次) -- before触发器 和 after触发器 刚执行语句 触发器跟着执行(1.判断语句是否执行 2.不给语句执行的机会) 和 语句可以先执行后设置的事件 -- 理解:当用户执行某个操作时,会执行我所写的触发器-- oracle中创建一个触发器 create or replace 关键字trigger + 触发器的名字。 create or replace trigger insertInterceptorafter delete on emp -- 定义触发器的时间种类。 xx xx on xx 表名。 declarev_money emp.sal%type;row1 emp%rowtype;cursor c(no emp.deptno%type) is select * from emp where deptno=no; begin insert into emp (empno,ename,job,sal) values(20,'学习','张三',2000);open c(20);loopfetch c into row1;exit when c%notfound;dbms_output.put_line('cursor index=='||c%rowcount||'姓名=='||row1.ename||'--------工资=='||row1.sal||'--------工作=='||row1.job);end loop;close c; end;-- 测试效果:删除20后新填入一个20在emp表中 并输出emp表中对应部门的 相关的 数据 delete from emp where empno=20;--练习 禁止用户在emp中的删除数据 tg01 alter trigger tg01 enable; alter trigger tg01 disable; delete from emp where empno=2;-- 禁止用户在emp中 update数据 create or replace trigger updateMessagebefore update on emp declarebeginraise_application_error(-20010,'禁止用户在emp中 update数据'); --注意oracle错误码 20000--20999; end;--测试 update emp set ename='哈哈' where empno=7788; alter trigger updateMessage disable;-- 2、行级别触发器 for each row :满足条件的每一行操作都会激活触发器; create or replace trigger rowMessagebefore update or insert on emp for each row declarebegin -- 如果条件执行 就给出相应的提示if updating then dbms_output.put_line('执行了更新的操作');if:old.sal>:new.sal then -- 逻辑表raise_application_error(-20002,'禁止给员工降工资!');end if;elsif inserting thendbms_output.put_line('执行了录入的操作');end if; end;--关闭触发器 alter trigger updateMessage disable; alter trigger insertInterceptor disable;update emp set sal=sal+1 where deptno=20; commit; insert into emp (empno,ename,sal)values(5,'嘻嘻',500);select * from emp; select sal from emp where deptno=20;-- 删除触发器 drop trigger tg02;
转载于:https://www.cnblogs.com/ZXF6/p/11240300.html
plsql 触发器介绍 语句级别触发器、行级别触发器。相关推荐
- oracle 触发器管理(以及行级触发器中有两个伪变量 :new 与 :old 的使用方法)(三个谓词inserting、deleting、updating的使用方法)
oracle触发器管理: 1.概念 2.建立一个简单的触发器: 3.触发器的作用 4.触发条件 a.触发事件 b.触发时间 c.触发级别 d.触发限制 e.触发对象 5.创建及使用触发器 6.触发器分 ...
- [转]sql update 触发器 获得被update的行的信息详解
create trigger TgName on tb for update as if update(recommend) begin update tb set commenddate= ...
- PowerBI实现行级别安全性(RLS)
Microsoft Power BI 允许将报表和工作区共享到 Active Directory 用户和组,从而帮助保护报表和工作区. 你还可以共享单个报表,但根据用户的工作角色使用户看到不同的数据. ...
- MySQL触发器介绍
前言: 在学习 MySQL 的过程中,可能你了解过触发器的概念,不清楚各位是否有详细的去学习过触发器,最近看了几篇关于触发器的文档,分享下 MySQL 触发器相关知识. 1.触发器简介 触发器即 tr ...
- SQL Server 2016 行级别权限控制
背景 假如我们有关键数据存储在一个表里面,比如人员表中包含员工.部门和薪水信息.只允许用户访问各自部门的信息,但是不能访问其他部门.一般我们都是在程序端实现这个功能,而在sqlserver2016以后 ...
- MySQL 进阶 触发器 -- 触发器介绍、触发器语法、触发器案例
文章目录 1. 触发器介绍 2. 触发器语法 2.1 创建触发器 2.2 查看触发器 2.3 删除触发器 3. 触发器案例 3.1 插入数据触发器 3.2 修改数据触发器 3.3 删除数据触发器 4. ...
- MSSQL-最佳实践-行级别安全解决方案
title: MSSQL-最佳实践-行级别安全解决方案 author: 风移 摘要 在SQL Server安全系列专题月报分享中,我们已经分享了:如何使用对称密钥实现SQL Server列加密技术.使 ...
- POWERBI|行级别权限
POWERBI是可以实现行级别权限以及页面级别权限的,本文主要介绍行级别权限. 一.数据模型 数据模型如下: 我们希望实现的场景是根据人员所归属的区域不一致,实现不同的人员所能看到的数据量是不一样的. ...
- MySql触发器介绍及应用
1.触发器(trigger)的定义 触发器是与表事件相关的特殊存储过程,它的执行不由程序调用,也非手工启动,而是由事件触发.激活从而实现执行. 简单来说,触发器就是事先为某张表绑定一段代码,当表中的某 ...
最新文章
- NDK断点无法调试Unable to detect application ABI's
- struts2中使用json遇到的问题总结及示例程序
- LeetCode Rotate Image(矩阵的旋转)
- 为什么只需要一个eden而需要两个survivor?
- 兔子繁殖(easy)
- 数据库-第三范式及BCN
- python现在的时间是几点_Python 的日期和时间处理
- Postman最被低估的功能,自动化接口测试效率简直无敌!
- 6章:常用工具类以及函数
- 我的成长笔记20210402(测试文档编写)
- “御用”大数据为你揭秘:故宫,怎么这么“火”?
- 二、【服务器】服务器入门·服务器简介
- AppStore 上架方法(将包提交到构建文件)
- Excel表格导入CAD后,表格内数字后的小数点怎么消除呢?
- 【优秀课设】基于Python的百度API的OCR名片识别【含完整API账户】
- CVE PoC的精选列表(三)
- CVPR2020论文分方向整理之检测篇_3D目标检测(代码/论文解读/136篇打包下载)
- 两个女孩全程不带现金,只付加密货币几乎游遍大半个国家是一种什么体验?...
- 支持HEVC/H265 RTMP接收的FFMPEG/FFPLAY WINDOWS版本
- MySQL-18全文本搜索-必知必会