当前位置: 首页 > news >正文

pl/sql篇之触发器

简述

本文將具体简述触发器的语法,触发条件及其适用场景,希望对读者理解,使用触发器能起到作用。

触发器的定位

触发器是数据库独立编译,存储的对象,是数据库重要的技术。和函数不同,触发器的执行是主动的,它监控着数据库,满足其触发条件自动触发,便于我们对数据库的管理。

触发器能监控什么

触发器能 监控数据库的数据,数据结构的变化及数据库事件。

可以监控数据库以下变化:

  • 数据库操作(DML)语句(DELETE,INSERT或UPDATE)

  • 数据库定义(DDL)语句(CREATE,ALTER或DROP)。

  • 数据库操作(SERVERERROR,LOGON,LOGOFF,STARTUP或SHUTDOWN)。

触发器语法

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;

触发器触发的时机

触发器的触发条件在事件发生前或发生后,主要用于DML语句下,触发的,一共有12种类型

BEFORE INSERTBEFORE INSERT FOR EACH ROWAFTER INSERTAFTER INSERT FOR EACH ROWBEFORE UPDATEBEFORE UPDATE FOR EACH ROWAFTER UPDATEAFTER UPDATE FOR EACH ROWBEFORE DELETEBEFORE DELETE FOR EACH ROWAFTER DELETEAFTER DELETE FOR EACH ROW

触发器类型

DML触发器

ORACLE可以在DML(数据更新语句)进行触发,可以在DML操作前或操作后进行触发,并且可以对每个行或语句操作上进行触发。

insert into user_lin(username) values('linzilong')create or replace trigger myTriggerInsert
before insert on user_lin
for each row
begin 
insert into mytrigger values('linzilong2',sysdate);
end;
替代触发器

由于在ORACLE里,不能直接对由两个以上的表建立的视图进行操作。所以给出了替代触发器。它就是ORACLE 8专门为进行视图操作的一种处理方法。

--練習替代觸發器
CREATE TABLE dept_lin(
deptno INT PRIMARY KEY,-- 部門編號
dname VARCHAR(14),-- 部門名稱
loc VARCHAR(13)-- 部門地點
);CREATE TABLE emp_lin(
empno INT NOT NULL PRIMARY KEY,-- 員工號
ename VARCHAR(10),-- 員工姓名
job VARCHAR(10),-- 職位
mgr INT, --上級領導
hiredate date,-- 受雇日期
sal number,-- 薪金
comm number, -- 佣金
deptno  number  -- 所屬部門);
INSERT INTO dept VALUES
(10, ‘Accounting’, ‘New York’),
(20, ‘Research’, ‘Dallas’),
(30, ‘Sales’, ‘Chicago’),
(40, ‘Operations’, ‘Boston’),
(50, ‘Admin’, ‘Washing’);
INSERT INTO emp VALUES
(7369, ‘Smith’, ‘Clerk’,7902, ‘1980-12-17’,800,0,20),
(7499, ‘Allen’, ‘Salesman’,7698,‘1981-2-20’,1600,300,30),
(7844, ‘Turner’, ‘Salesman’,7499, ‘1981-9-8’,1500,0,30),
(7698, ‘Tom’, ‘Manager’,0, ‘1981-9-8’,6100,600,40),
(7876, ‘Adams’, ‘Clerk’,7900, ‘1987-5-23’,1100,0,20),
(7900, ‘James’, ‘Clerk’,7698, ‘1981-12-3’,2400,0,30),
(7902, ‘Ford’, ‘Analyst’,7698, ‘1981-12-3’,3000,NULL,20),
(7901, ‘Kik’, ‘Clerk’,7900, ‘1981-12-3’,1900,0,30);create or replace view myview as 
SELECT emp_lin.*
FROM emp_lin left   JOIN dept_lin
ON dept_lin.deptno=emp_lin.deptno;create or replace trigger emp_triggersINSTEAD OF   delete   ON myview  for each row
begin delete from  emp_lin where empno= :old.empno;end emp_triggers ;select *from myview
delete from  myview where empno=7369
系统触发器

ORACLE 8i 提供了第三种类型的触发器叫系统触发器。它可以在ORACLE数据库系统的事件中进行触发,如ORACLE系统的启动与关闭等。

触发器的限制

1.不能使用控制语句:如commit、rollback、savepoint

2.由触发器所调用过程或函数也不能使用控制语句

3.不能使用long、long raw类型

oracle触发器的优缺点

优势

  1. 自动化。自动化维护数据保证数据的一致性

  1. 维护数据的合法性。数据插入前自动检查数据的合法性,保证数据的安全。

缺点

可维护性差。由于触发器的隐蔽性,数据更新失败,难以追溯,逻辑的修改需要修改源码,由于触发器的源码可读性较差,导致这一过程,变得更加麻烦。

相关文章:

pl/sql篇之触发器

简述本文將具体简述触发器的语法,触发条件及其适用场景,希望对读者理解,使用触发器能起到作用。触发器的定位触发器是数据库独立编译,存储的对象,是数据库重要的技术。和函数不同,触发器的执行是主动的&…...

黑马《数据结构与算法2023版》正式发布

有人的地方就有江湖。 在“程序开发”的江湖之中,各种技术流派风起云涌,变幻莫测,每一位IT侠客,对“技术秘籍”的追求和探索也从未停止过。 要论开发技术哪家强,可谓众说纷纭。但长久以来,确有一技&#…...

Spring的创建和使用

目录 创建Spring项目 步骤 1)使用Maven的方式创建Spring项目 2)添加Spring依赖 3)创建启动类 存Bean对象 1.创建Bean对象 2.将Bean注册到Spring中 取Bean对象并使用 步骤 1.先得到Spring上下文对象 2.从Spring中获取Bean对象 3.使用Bean ApplicationContext VS Bea…...

如何实现外网跨网远程控制内网计算机?快解析来解决

远程控制,是指管理人员在异地通过计算机网络异地拨号或双方都接入Internet等手段,连通需被控制的计算机,将被控计算机的桌面环境显示到自己的计算机上,通过本地计算机对远方计算机进行配置、软件安装程序、修改等工作。通俗来讲&a…...

【跟着ChatGPT学深度学习】ChatGPT教我文本分类

【跟着ChatGPT学深度学习】ChatGPT教我文本分类 ChatGPT既然无所不能,我为啥不干脆拜他为师,直接向他学习,岂不是妙哉。说干就干,我马上就让ChatGPT给我生成了一段文本分类的代码,不看不知道,一看吓一跳&am…...

IM即时通讯架构技术:可靠性、有序性、弱网优化等

消息的可靠性是IM系统的典型技术指标,对于用户来说,消息能不能被可靠送达(不丢消息),是使用这套IM的信任前提。 换句话说,如果这套IM系统不能保证不丢消息,那相当于发送的每一条消息都有被丢失的…...

【算法】三道算法题两道难度中等一道困难

算法目录只出现一次的数字(中等难度)java解答参考二叉树的层序遍历(难度中等)java 解答参考给表达式添加运算符(比较困难)java解答参考大家好,我是小冷。 上一篇是算法题目 接下来继续看下算法题…...

正交实验与极差分析

正交试验极差分析流程如下图: 正交试验说明 正交试验是研究多因素试验的设计方法。对于多因素、多水平的实验要求,如果每个因素的每个水平都要进行试验,这样就会耗费大量的人力和时间,正交试验可以选择出具有代表性的少数试验进行…...

DEXTUpload .NET增强的上传速度和可靠性

DEXTUpload .NET增强的上传速度和可靠性 DEXTUpload.NET Pro托管在Windows操作系统上的Internet Information Server(IIS)上,服务器端组件基于HTTP协议,支持从web浏览器到web服务器的文件上载。它也可以在ASP.NET服务器应用程序平台开发的任何网站上使用…...

SkyWalking 将方法加入追踪链路(@Trace)

SkyWalking8 自定义链路追踪@Trace 自定义链路,需要依赖skywalking官方提供的apm-toolkit-trace包.在pom.xml的dependencies中添加如下依赖: <dependency><groupId>org.apache.skywalking</groupId><artifactId>apm-toolkit-trace</artifactId>&…...

MySQL Administrator定时备份MySQL数据库

1、下载并安装软件mysql-gui-tools-5.0-r17-win32.exe 2、将汉化包zh_CN文件夹拷贝到软件安装目录 3、菜单中打开MySql Adminstrator&#xff0c;见下图&#xff0c;初次打开无服务实例。 点击已存储连接右侧按钮①&#xff0c;打开下图对话框。点击“新连接”按钮&#xff…...

Kubernetes入门教程 --- 使用二进制安装

Kubernetes入门教程 --- 使用二进制安装1. Introduction1.1 架构图1.2 关键字介绍1.3 简述2. 使用Kubeadm Install2.1 申请三个虚拟环境2.2 准备安装环境2.3 配置yum源2.4 安装Docker2.4.1 配置docker加速器并修改成k8s驱动2.5 时间同步2.6 安装组件3. 基础知识3.1 Pod3.2 控制…...

深度学习模型压缩方法概述

一,模型压缩技术概述 1.1,模型压缩问题定义 因为嵌入式设备的算力和内存有限,因此深度学习模型需要经过模型压缩后,方才能部署到嵌入式设备上。 模型压缩问题的定义可以从 3 角度出发: 模型压缩的收益: 计算: 减少浮点运算量(FLOPs),降低延迟(Latency)存储: 减少内…...

《NFL橄榄球》:坦帕湾海盗·橄榄1号位

坦帕湾海盗&#xff08;英语&#xff1a;Tampa Bay Buccaneers&#xff09;是一支位于佛罗里达州的坦帕湾职业美式橄榄球球队。他们是全国橄榄球联盟的南区其中一支球队。在1976年&#xff0c;与西雅图海鹰成为NFL的球队。球队在最初的两个球季连败26场&#xff0c;在二十世纪七…...

Xmake v2.7.7 发布,支持 Haiku 平台,改进 API 检测和 C++ Modules 支持

layout: post.cn title: “Xmake v2.7.7 发布&#xff0c;支持 Haiku 平台&#xff0c;改进 API 检测和 C Modules 支持” tags: xmake lua C/C package modules haiku cmodules categories: xmake Xmake 是一个基于 Lua 的轻量级跨平台构建工具。 它非常的轻量&#xff0c;没…...

苹果ios签名证书的生成方法

在使用hbuilderx打包uniapp或html5应用的时候&#xff0c;假如是打包ios应用&#xff0c;是需要ios签名证书&#xff0c;和证书profile文件的&#xff0c;这个证书要求是p12格式的证书&#xff0c;profile文件又叫描述文件。 这两个文件&#xff0c;需要在苹果开发者中心生成&…...

c++开发配置常用网站记录

1.ubuntu 镜像源&#xff1a; (1) 清华源&#xff1a;https://mirror.tuna.tsinghua.edu.cn/help/ubuntu/ (2) 阿里源&#xff1a;https://developer.aliyun.com/mirror/ubuntu?spma2c6h.13651102.0.0.3e221b11VuM27s 包含了ubuntu各个版本的source源 2.ubuntu iso镜像下载…...

DC-1 靶场学习

以前写过了&#xff0c;有一些忘了&#xff0c;快速的重温一遍。 DC一共九个靶场&#xff0c;目标一天一个。 文章目录环境配置&#xff1a;信息搜集&#xff1a;漏洞复现&#xff1a;FLAG获取环境配置&#xff1a; 最简单的办法莫过于将kali和DC-1同属为一个nat的网络下。 信…...

oracle 不使用索引深入解析

首先&#xff0c;我们要确定数据库运行在何种优化模式下&#xff0c;相应的参数是&#xff1a;optimizer_mode。缺省的设置应是"choose"&#xff0c;即如果对已分析的表查询的话选择CBO&#xff0c;否则选择RBO。如果该参数设为“rule”&#xff0c;则不论表是否分析…...

什么是自助式BI工具,有没有推荐

为什么需要自助式BI&#xff1f; 传统的BI采用的是“业务提报表需求&#xff0c;IT进行开发”的模式。决策管理者和业务人员提出用报表等来展示经营管理数据的需求&#xff1b;接着IT响应需求&#xff0c;进行需求沟通、数据处理加工、报表开发等主体工作&#xff1b;最后决策管…...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统&#xff0c;可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析&#xff1a;自动解析Markdown文档结构PPT模板分析&#xff1a;分析PPT模板的布局和风格智能布局决策&#xff1a;匹配内容与合适的PPT布局自动…...

cf2117E

原题链接&#xff1a;https://codeforces.com/contest/2117/problem/E 题目背景&#xff1a; 给定两个数组a,b&#xff0c;可以执行多次以下操作&#xff1a;选择 i (1 < i < n - 1)&#xff0c;并设置 或&#xff0c;也可以在执行上述操作前执行一次删除任意 和 。求…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

相机从app启动流程

一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

Redis数据倾斜问题解决

Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中&#xff0c;部分节点存储的数据量或访问量远高于其他节点&#xff0c;导致这些节点负载过高&#xff0c;影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

短视频矩阵系统文案创作功能开发实践,定制化开发

在短视频行业迅猛发展的当下&#xff0c;企业和个人创作者为了扩大影响力、提升传播效果&#xff0c;纷纷采用短视频矩阵运营策略&#xff0c;同时管理多个平台、多个账号的内容发布。然而&#xff0c;频繁的文案创作需求让运营者疲于应对&#xff0c;如何高效产出高质量文案成…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)

推荐 github 项目:GeminiImageApp(图片生成方向&#xff0c;可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...

NPOI Excel用OLE对象的形式插入文件附件以及插入图片

static void Main(string[] args) {XlsWithObjData();Console.WriteLine("输出完成"); }static void XlsWithObjData() {// 创建工作簿和单元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook new HSSFWorkbook();HSSFSheet sheet (HSSFSheet)workboo…...

Unity VR/MR开发-VR开发与传统3D开发的差异

视频讲解链接&#xff1a;【XR马斯维】VR/MR开发与传统3D开发的差异【UnityVR/MR开发教程--入门】_哔哩哔哩_bilibili...

在 Visual Studio Code 中使用驭码 CodeRider 提升开发效率:以冒泡排序为例

目录 前言1 插件安装与配置1.1 安装驭码 CodeRider1.2 初始配置建议 2 示例代码&#xff1a;冒泡排序3 驭码 CodeRider 功能详解3.1 功能概览3.2 代码解释功能3.3 自动注释生成3.4 逻辑修改功能3.5 单元测试自动生成3.6 代码优化建议 4 驭码的实际应用建议5 常见问题与解决建议…...