INSTEAD OF 触发器的创建

Oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645

INSTEAD OF 触发器,也称替换触发器,是一种特殊的触发器,和其他建立在数据表上的触发器不同,INSTEAD OF 触发器建立在视图上。

在 Oracle 数据库中,复杂的视图常从多个数据表中获取数据有的视图还包含分组等计数函数,因此一般不允许对视图施加 DML操作,但是使用 INSTEAD OF 触发器,在触发器内通过定义的PL/SQL块,完成间接地对视图进行 DML操作。

下面就通过范例来学>INSTEAD OF 触发器的创建和使用。
在介绍 INSTEAD OF 触发器之前,首先创建一个视图,该视图关联数据表 emp 和 dept,代码如下所示。

CREATE VIEW test_view AS
SELECT empno,ename,dept.deptno,dname
FROM emp,dept
WHERE emp.deptno=dept.deptno;

由于 scott 用户没有创建视图的权限,因此首先应给该用户赋予创建视图的权限,如下所示。

CONN sys/change_on_install AS SYSDBA,GRANT CREATE VIEW to scott;

然后重新连接到 scott 用户下,创建前述视图。现在向该视图插入如下数据。

INSERT INTO temp_vieW VALUES(1234,’zhangsan’,'50’,chairman’)

运行代码时会出现如下错误。

如果想修改视图的内容,只有通过创建INSTEAD OF 触发器来实现。

创建INSTEAD OF 触发器以实现修改视图 test view 中的内容

视图 test_view实际上来源自两个数据表,这两个数据表通过 deptno 字段建立关联。

在Oracle 数据库中,一般要想通过 DML操作修改视图是不可行的,因为修改视图实际上是修改对应数据表中的内容,

两张数据表中数据是关联的,修改的时候,必须保证两个数据表关联字段同时修改或者增加。

下图是 INSTEAD OF 触发器的创建代码,

如下图所示,在触发体内,首先判断 dept 中是否存在要插入记录的部门编号,如果存在,则只需在emp 中添加记录就行了,

如果不存在,这时系统认为是 EXCEPTION,此时需要向两个表中都添加数据。

如已经创建替换触发器,可以试一下插入数据,如下图所示,

我们可以看出,现在可以实现向视图中插入数据

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/829704.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是vue,vue怎样使用?

Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面&#xff0…

C++ 重载 [] 运算符

刚开始我是震惊的! 我从未想过[]下居然有逻辑! 从学步开始 曾因会使用a[0]访问数组元素而沾沾自喜 曾固步自封的认为[] ,理应是访问数组的一种方式 天真快乐的同时,认为[]只是一个无情的标识! 所以 当我们写下a[0]时,究竟是为了什么? 是为了找到a[0]对应的值 那么如何…

Podman入门全指南:安装、配置与运行容器

欢迎来到我的博客,代码的世界里,每一行都是一个故事 Podman入门全指南:安装、配置与运行容器 前言Podman简介什么是 Podman?Podman 与 Docker 的主要区别 安装Podman支持的操作系统和环境安装步骤详解LinuxUbuntuCentOS/RHEL MacO…

双系统下删除ubuntu

絮絮叨叨 由于我在安装Ubuntu的时候没有自定义安装位置,而是使用与window共存的方式让Ubuntu自己选择安装位置,导致卸载时我不知道去格式化哪个分区,查阅多方资料后无果,后在大佬帮助下找到解决方案 解决步骤 1、 插上Ubuntu安…

Axure如何调起浏览器的打印功能

Axure如何调起浏览器的打印功能 答:javascript:window.print(); 不明白的继续往下看 应用场景: 原型设计中,页面上的打印按钮,需要模拟操作演示,需要点击指定的按钮时,唤起浏览器的打印功能&#xff08…

使用Pandas从Excel文件中提取满足条件的数据并生成新的文件

目录 一、引言 二、环境准备 三、读取Excel文件 四、数据筛选 五、保存为新的Excel文件 六、案例与代码总结 七、进阶用法与注意事项 八、结语 在数据处理的日常工作中,我们经常需要从大量数据中筛选出满足特定条件的数据集。Pandas是一个强大的Python数据分…

比 PSD.js 更强的下一代 PSD 解析器,支持 WebAssembly

比 PSD.js 更强的下一代 PSD 解析器,支持 WebAssembly 1.什么是 webtoon/ps webtoon/ps 是 Typescript 中轻量级 Adobe Photoshop .psd/.psb 文件解析器,对 Web 浏览器和 NodeJS 环境提供支持,且做到零依赖。 Fast zero-dependency PSD par…

2024 年最好的免费数据恢复软件,您可以尝试的几个数据恢复软件

由于系统崩溃而丢失数据可能会给用户带来麻烦。我们将重要的宝贵数据和个人数据保存在我们的 PC、笔记本电脑和其他数字设备上。您可能会因分区丢失、意外删除文件和文件夹、格式化硬盘驱动器而丢失数据。数据丢失是不幸的,如果您不小心从系统中删除了文件或数据&am…

初识ChatGPT

初识ChatGPT AIGC这么火热,了解一下?本文主要通过ChatGPT整理了人工智能和GPT相关的很多概念,看完之后,应该能瞥见人工智能的冰山一角。 参考 GPT-4预示着前端开发的终结?你准备好面对无法预测的技术挑战了吗&#…

MATLAB初学者入门(23)—— 旅行商问题(TSP)优化

旅行商问题(TSP, Traveling Salesman Problem)是一个经典的优化问题,要求找到一个最短的路线,使得旅行商从一个城市出发,经过所有城市一次后,回到原出发点。这是一个NP难问题,在数学优化和计算机…

深入理解 Srping IOC

什么是 Spring IOC? IOC 全称:Inversion of Control,翻译为中文就是控制反转,IOC 是一种设计思想,IOC 容器是 Spring 框架的核心,它通过控制和管理对象之间的依赖关系来实现依赖注入(Dependenc…

无人机在测绘领域的应用

你知道吗?无人机在测绘领域的应用已经掀起了一场技术革命! 🚀它不仅可以高效完成测绘任务,还能在恶劣环境下工作,真是测绘界的超级英雄啊! 想象一下,无人机像一只自由翱翔的鸟儿,在…

正点原子[第二期]ARM(I.MX6U)裸机篇学习笔记-1.2

前言: 本文是来自哔哩哔哩网站上视频“正点原子[第二期]Linux之ARM(MX6U)裸机篇”的学习笔记,在这里会记录下正点原子Linux ARM MX6ULL 开发板根据配套的哔哩哔哩学习视频所作的实验和笔记内容。本文大量的引用了正点原子哔哔哩网…

结构体内存对齐(未完成版)

前言 我们已经掌握了结构体的基本使用了。 现在我们深入讨论一个问题:计算机构体的大小。 这也是一个特别热门的考点:结构体内存对齐 练习导入 对齐规则

electron ipcRenderer.invoke 和 ipcMain.handle 介绍

ipcMain.handle 是 Electron 主进程中的一个方法,用于处理从渲染进程发送过来的 IPC 请求,并返回一个 Promise。渲染进程可以使用 ipcRenderer.invoke 方法发送 IPC 请求到主进程,并等待主进程处理完成后返回结果。 在主进程中 (main.ts)&am…

Python构建学生信息管理系统:前端页面开发

Python构建学生信息管理系统:前端页面开发 在本系列博客的前几篇中,我们详细介绍了学生信息管理系统(SIMS)的需求分析、环境搭建、工程初始化、数据库设计、后端逻辑以及安全设计。在本文中,我们将专注于前端页面的开…

材质系统:关于PBR(Physically Based Rendering)需要知道的一些事

目录 前言 1. 什么是PBR? 2. 为什么PBR在近期开始流行 3. PBR材质与其他渲染器中材质(如Vray材质、Enscape中的材质)的区别是什么? 4. 为什么Vray之类的渲染器从一开始没有使用PBR材质系统? 前言 本文内容基于对图…

vue项目npm run build 打包之后如何在本地访问

vue项目npm run build 打包之后如何在本地访问 如果直接访问时,则会报错如下的信息: 报错码: Access to script at file:///D:/assets/index-DDVBfHVo.js from origin null has been blocked by CORS policy: Cross origin requests are on…

【转载】如何在MacBookPro上把Ubuntu安装到移动硬盘里过程记录

以下主要目的是记录安装过程中的问题,安装步骤等信息怕忘记 环境信息: Mac :macOS High Sierra 10.13.6 内存8G(Swap时用到) Ubuntu: ubuntu-22.04.4-desktop-amd64.ios 金士顿U盘:Kingston-64G 烧录软件:balenaEtcher…

牛客NC371 验证回文字符串(二)【简单 双指针 C++/Java/Go/PHP】

题目 题目链接: https://www.nowcoder.com/practice/130e1a9eb88942239b66e53ec6e53f51 思路 直接看答案,不难参考答案C class Solution {public:/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可…