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

Oracle触发器

Oracle触发器就是特定事件发生时自动执行的存储过程。

触发器基本使用

基本语法:

create [or replace] trigger 触发器名称
alter | before | instead of
[insert] [[or] update [of1,2,...]] [[or] delete]
on 表名
[referencing {OLD [as] old / NEW [as] new}]
[for each row]
[when (condition)]
declare
begin
...
end;

示例:

-- 对学生表进行增加或者删除或删除后打印 "操作成功"
create or replace trigger trigger01
after
insert or update or delete
on student
declare
begindbms_output.put_line('操作成功');
end;

2. 触发器的类型

2.1 语句级触发器

语句级触发器关注的执行了某条语句。
示例:

-- 创建一个对学生表的增删改计数器
-- 准备表
create table t_audit_table(stablename varchar2(30),nins number,--记录添加次数nupd number,--记录修改次数ndel number,--记录删除次数startdate date,enddate date
)
-- 创建触发器
create or replace trigger trigger02
after
insert or update or delete
on student
declarev_count number(3);
begin-- 判断student在如上声明的日志表中是否有记录,如果没有,则先插入数据select count(*) into v_count from student where stablename='student';if v_count <= 0 theninsert into t_audit_table(stablename,nins,nupd,ndel) values('student',0,0,0);end if;if inserting thenupdate t_audit_table set nins=nins+1 where stablename='student';end if;if updating thenupdate t_audit_table set nupd=nupd+1 where stablename='student';end if;if deleting thenupdate t_audit_table set ndel=ndel+1 where stablename='student';end if;
end;

2.2 行级触发器

行级触发器是影响了多少行数据,行级触发器就触发多少次。

create or replace trigger trigger02
after
insert or delete or update
on student
-- 行级触发
for each row
declarev_count number(3);
begin-- 判断student在如上声明的日志表中是否有记录,如果没有,则先插入数据select count(*) into v_count from student where stablename='student';if v_count <= 0 theninsert into t_audit_table(stablename,nins,nupd,ndel) values('student',0,0,0);end if;if inserting thenupdate t_audit_table set nins=nins+1 where stablename='student';end if;if updating thenupdate t_audit_table set nupd=nupd+1 where stablename='student';end if;if deleting thenupdate t_audit_table set ndel=ndel+1 where stablename='student';end if;
end;

2.3 限制行级触发器

对部分数据做特定处理,例如:不能删除管理员。

create or replace trigger trigger03
before
delete
on student
when (old.name='admin')
declare
begindbms_output.put_line('管理员不能被删除');RAISE_APPLICATION_ERROR(-20001, '管理员不能被删除');
end;

相关文章:

Oracle触发器

Oracle触发器就是特定事件发生时自动执行的存储过程。 触发器基本使用 基本语法&#xff1a; create [or replace] trigger 触发器名称 alter | before | instead of [insert] [[or] update [of 列1,列2,...]] [[or] delete] on 表名 [referencing {OLD [as] old / NEW [as]…...

GPT-5:未来已来,我们如何共舞于智能新纪元?

GPT-5&#xff1a;未来已来&#xff0c;我们如何共舞于智能新纪元&#xff1f; 在科技日新月异的今天&#xff0c;人工智能&#xff08;AI&#xff09;的每一次飞跃都深刻地改变着人类社会的面貌。从AlphaGo击败围棋世界冠军&#xff0c;到GPT系列模型引领自然语言处理&#x…...

2024年6月 青少年机器人技术等级考试理论综合试卷(五级)

202406 青少年等级考试机器人理论真题五级 第 1 题 ESP32 for Arduino&#xff0c;通过引脚2读取按键开关的返回值&#xff0c;电路如下图所示&#xff0c;程序pinMode(2, mode);中&#xff0c;参数mode的值是&#xff1f;&#xff08; &#xff09; A&#xff1a;INPUT B&…...

【Go】 HTTP编程3-路由httprouter

HttpRouter httprouter httprouter是第三方的库&#xff0c;不是go的标准库&#xff0c;使用命令 go get -u github.com/julienschmidt/httprouter &#xff0c;下载该模块&#xff0c;-u表示如果已经下载但更新到最新版本Router 实现了http.Handler接口&#xff0c;为各种 re…...

Spring Boot 整合 SA-Token 使用详解

Spring Boot 整合 SA-Token 使用详解 在现代Web开发中&#xff0c;用户认证与授权是构建安全应用的基础。SA-Token是一个轻量级的Java权限认证框架&#xff0c;它以其简洁的API设计、高效的执行效率以及丰富的功能特性&#xff0c;成为了众多开发者在Spring Boot项目中实现用户…...

1.3 C 语言入门实战:从 Hello World 到基础语法解析

目录 1 程序的作用 2 初识 Hello World 2.1 新建项目 2.2 程序解释 3 printf 的作用 4 注释及其注意事项 4.1 单行注释 4.2 多行注释 4.3 嵌套错误 5 项目在磁盘上的位置 1 程序的作用 如下图所示&#xff0c;我们编写了一个可以做加法的程序&#xff0c;我们给程序…...

一文读懂什么是Go语言goroutine

1. 进程、线程和协程的区别 进程: 进程是具有一定独立功能的程序&#xff0c;进程是系统资源分配和调度的最小单位。每个进程都有自己的独立内存空间&#xff0c;不同进程通过进程间通信来通信。由于进程比较重量&#xff0c;占据独立的内存&#xff0c;所以上下文进程间的切换…...

计算机毕业设计 农家乐管理平台 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…...

Spring Boot优缺点

Spring Boot 是一款用于简化Spring应用开发的框架&#xff0c;它集成了大量常用的框架和工具&#xff0c;大大简化了Spring项目的配置和部署。下面是Spring Boot的优缺点&#xff1a; 优点&#xff1a; 简化配置&#xff1a;Spring Boot自动配置功能可以根据应用的依赖自动配…...

Android Studio中创建apk签名文件

本文以macOS中Android Studio 2021.1.1版本为例介绍创建apk签名文件的操作步骤&#xff1a; 1.启动Android Studio&#xff0c;并打开一个Android项目。 2.依次点击菜单&#xff1a;Build -> Generate Signed Bundle / APK...。 3.在弹出的"Generate Signed Bundle or …...

CRC32 JAVA C#实现

项目中用到CRC32进行校验得地方&#xff0c;需要用到C#和java进行对比&#xff1a; 一、C#实现&#xff1a; class CRC32Cls { protected ulong[] Crc32Table; //生成CRC32码表 public void GetCRC32Table() { ulong Crc; …...

本科阶段最后一次竞赛Vlog——2024年智能车大赛智慧医疗组准备全过程——5Webscoket节点的使用

本科阶段最后一次竞赛Vlog——2024年智能车大赛智慧医疗组准备全过程——5Webscoket节点的使用 ​ 有了前面几篇文章的铺垫&#xff0c;现在已经可以实现我到手测试那一步的 1.解读usb_websocket_display.launch.py ​ 首先进入这个目录/root/dev_ws/src/origincar/originca…...

深入学习小程序第二天:事件处理与用户交互

一、概念 1. 事件绑定与类型 在小程序中&#xff0c;通过在组件上添加特定的属性&#xff08;如 bind 开头的属性&#xff09;来绑定事件处理函数&#xff0c;以响应用户的交互操作。常见的事件类型包括触摸事件、表单事件和系统事件&#xff1a; 触摸事件&#xff1a;用于响…...

操作系统快速入门(一)

&#x1f600;前言 本篇博文是关于操作系统的&#xff0c;希望你能够喜欢 &#x1f3e0;个人主页&#xff1a;晨犀主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是晨犀&#xff0c;希望我的文章可以帮助到大家&#xff0c;您的满意是我的动力&#x1f609;&…...

Spring Cloud微服务性能优化:策略、实践与未来趋势

标题&#xff1a;Spring Cloud微服务性能优化&#xff1a;策略、实践与未来趋势 摘要 在微服务架构中&#xff0c;服务调用链路的性能优化是确保系统高效运行的关键。Spring Cloud作为微服务架构的主流实现之一&#xff0c;提供了多种工具和方法来优化服务间的调用。本文将深…...

秒懂C++之多态

目录 一. 多态的概念 二. 多态的定义及实现 多态的构成条件 虚函数重写的例外 协变(基类与派生类虚函数返回值类型不同) 析构函数的重写(基类与派生类析构函数的名字不同) 练习例题 final override 重载、覆盖(重写)、隐藏(重定义)的对比 三. 抽象类 四. 多态的原理…...

C语言:求最大数不用数组

&#xff08;1&#xff09;题目&#xff1a; 输入一批正数用空格隔开&#xff0c;个数不限&#xff0c;输入0时结束循环&#xff0c;并且输出这批整数的最大值。 &#xff08;2&#xff09;代码&#xff1a; #include "stdio.h" int main() {int max 0; // 假设输入…...

零门槛成为HelpLook推荐官,邀好友加入,奖励享不停!

什么&#xff01;&#xff1f; 还有谁不知道HelpLook推荐官计划&#xff01; 只需要简单地注册加入 在好友成功订阅套餐之后 可一次性获得20%的丰厚现金返佣 HelpLook是一款快速搭建AI知识库的系统&#xff0c;并帮助企业0代码搭建帮助中心、FAQs、SOPs、产品文档、说明书和…...

基于python的图书馆大数据可视化分析系统设计与实现

博主介绍&#xff1a; 大家好&#xff0c;本人精通Java、Python、C#、C、C编程语言&#xff0c;同时也熟练掌握微信小程序、Php和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我有丰富的成品Java、Python、C#毕设项目经验&#xff0c;能够为学生提供各类…...

利用formdata自动序列化和xhr上传表单到后端

//FormData对象是XMLHTTPRequest level2新增的类型&#xff0c;它可以自动序列化表单内容&#xff0c;不再需要我们去写序列化表单方法&#xff1b; FormData()即可以直接把整个表单给它&#xff0c;也可以分别使用append(‘字段’,‘值’)方法给FormData()&#xff1b; 现在就…...

Cursor实现用excel数据填充word模版的方法

cursor主页&#xff1a;https://www.cursor.com/ 任务目标&#xff1a;把excel格式的数据里的单元格&#xff0c;按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例&#xff0c;…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引&#xff0c;可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度&#xff08;创建索引的主要原因&#xff09;。3. 可以加速表和表之间的连接&#xff0c;实现数据的参考完整性。4. 可以在查询过程中&#xff0c;…...

Python爬虫实战:研究feedparser库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

跨链模式:多链互操作架构与性能扩展方案

跨链模式&#xff1a;多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈&#xff1a;模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展&#xff08;H2Cross架构&#xff09;&#xff1a; 适配层&#xf…...

Android15默认授权浮窗权限

我们经常有那种需求&#xff0c;客户需要定制的apk集成在ROM中&#xff0c;并且默认授予其【显示在其他应用的上层】权限&#xff0c;也就是我们常说的浮窗权限&#xff0c;那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

免费PDF转图片工具

免费PDF转图片工具 一款简单易用的PDF转图片工具&#xff0c;可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件&#xff0c;也不需要在线上传文件&#xff0c;保护您的隐私。 工具截图 主要特点 &#x1f680; 快速转换&#xff1a;本地转换&#xff0c;无需等待上…...

基于IDIG-GAN的小样本电机轴承故障诊断

目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) ​梯度归一化(Gradient Normalization)​​ (2) ​判别器梯度间隙正则化(Discriminator Gradient Gap Regularization)​​ (3) ​自注意力机制(Self-Attention)​​ 3. 完整损失函数 二…...

JS手写代码篇----使用Promise封装AJAX请求

15、使用Promise封装AJAX请求 promise就有reject和resolve了&#xff0c;就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...

深入浅出Diffusion模型:从原理到实践的全方位教程

I. 引言&#xff1a;生成式AI的黎明 – Diffusion模型是什么&#xff1f; 近年来&#xff0c;生成式人工智能&#xff08;Generative AI&#xff09;领域取得了爆炸性的进展&#xff0c;模型能够根据简单的文本提示创作出逼真的图像、连贯的文本&#xff0c;乃至更多令人惊叹的…...

ubuntu系统文件误删(/lib/x86_64-linux-gnu/libc.so.6)修复方案 [成功解决]

报错信息&#xff1a;libc.so.6: cannot open shared object file: No such file or directory&#xff1a; #ls, ln, sudo...命令都不能用 error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory重启后报错信息&…...