Oracle触发器简单应用示例

目录

一、应用描述

【1】、应用场景:

【2】、具体场景:

二、表结构介绍

 【1】表名介绍:

【2】表结构:

三、设置触发器


一、应用描述

【1】、应用场景:

现有一张库存明细以及销售明细表,销售明细表发生售卖即新增一条销售数据,同时库存相应减少一件;

【2】、具体场景:

【1】1001号产品售出1件,1001号产品库存减少一件;

【2】1001号产品发生1件退货,即销售-1件,1001号产品库存+1。

二、表结构介绍

 【1】表名介绍:

库存明细表:e_stock_info

销售明细表:e_sales_info

【2】表结构:

库存明细表:e_stock_info
销售明细表:e_sales_info

三、设置触发器

CREATE OR REPLACE TRIGGER sales_trigger
BEFORE INSERT
ON e_sales_info  -- 替换为实际的销售记录表名
FOR EACH ROW
DECLAREv_prod_id NUMBER;  -- 替换为实际的产品ID列名v_quantity_sold NUMBER;  -- 替换为实际的销售数量列名v_current_stock NUMBER;
BEGIN-- 获取销售记录中的产品ID和销售数量v_prod_id := :NEW.prod_id;  -- 假设产品ID列名为prod_idv_quantity_sold := :NEW.quantity_sold;  -- 假设销售数量列名为quantity_sold-- 获取当前库存数量SELECT stock_quantity INTO v_current_stockFROM e_stock_info  -- 替换为实际的产品表名WHERE prod_id = v_prod_id;-- 检查库存是否足够IF v_current_stock >= v_quantity_sold THEN-- 更新库存数量UPDATE e_stock_infoSET stock_quantity = v_current_stock - v_quantity_soldWHERE prod_id = v_prod_id;ELSE-- 抛出异常或执行其他操作,表示库存不足RAISE_APPLICATION_ERROR(-20001, '库存不足');-- 更新库存数量UPDATE e_stock_infoSET stock_quantity = v_current_stock - v_quantity_soldWHERE prod_id = v_prod_id;END IF;
END;

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

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

相关文章

知识图谱符号表示比较:特性图、RDF和OWL

目录 前言1 特性图:灵活的图结构表示1.1 优势与灵活性1.2 存储优化与查询优势1.3 挑战:缺乏工业标准支持 2 RDF(Resource Description Framework):面向Web的数据标准2.1 三元组结构的优势2.2 语义标准与词汇丰富性2.3 …

Java算法 leetcode简单刷题记录6

Java算法 leetcode简单刷题记录6 环和杆: https://leetcode.cn/problems/rings-and-rods/ 统计范围内的元音字符串数: https://leetcode.cn/problems/count-the-number-of-vowel-strings-in-range/ 最长平衡子字符串: https://leetcode.cn/…

Golang学习之路一八类型别名和转换

Golang学习之路一八类型别名和转换 类型别名 使用 type 关键字自定义类型 package mainimport ("fmt""reflect" )// type 自定义类型名 原类型 type myint intfunc main() {var v1 myintv1 10fmt.Println(reflect.TypeOf(v1)) }// 输出结果: main.myin…

elment-plus如何引入scss文件实现自定义主题色

elment-plus如何引入scss文件实现自定义主题色!如果您想修改elementPlus的默认主题色调,使用自定义的色调,可以考虑使用官方提供的解决办法。 第一步你需要在项目内安装sass插件包。 npm i sass -D 如图,安装完成后,你…

gdzwfw某省公共资源交易平台逆向学习

声明:本文中网站仅为学习技术使用,请勿暴力爬取数据。 学习地址:aHR0cHM6Ly95Z3AuZ2R6d2Z3Lmdvdi5jbi8jLzQ0L2p5Z2c 此网站采用请求头反爬,难点是请求头中几个参数是如何生成的(别问为什么知道是请求头,一…

java删除当前文件以及包括当前所在文件夹及其所有子文件夹的所有空文件夹

java删除当前文件以及包括当前所在文件夹及其所有子文件夹的所有空文件夹 Test public void testDeleteFileAndEmptyDirectory() {deleteFileAndEmptyDirectory("D:\\Temp\\testFile\\", "111.txt"); }public static void deleteFile(String filePath) {F…

java进阶-jvm精讲及实战

深入了解jvm及实战 1.引言2.jvm概念理解1.1什么是jvm1.2 jvm功能1.3 jvm规范及主流版本1.4 jre jdk jvm的区别和联系1.5 jvm组成 2.jvm-字节码文件class2.1 java和class无关性2.2 字节码应用场景2.4 字节码文件打开方式2.3 字节码文件组成2.3.1 一般信息2.3.2 常量池2.3.3 方法…

Flutter底部导航栏插件persistent_bottom_nav_bar的使用

flutter 框架中的 persistent_bottom_nav_bar 插件可以让我们快速实现页面底部导航栏(也就是 bottomNavigationBar )的布局且能拥有多样的切换效果(包括但不限于:动画切换效果、中间凸起按钮效果等) 插件网址&#xf…

【MySQL·8.0·源码】subquery 子查询处理分析(一)

引言 在 SQL 中,子查询属于 Nested Query 的一种形式,根据 Kim 的分类[1],Nested Query 即嵌套查询是一种 SQL-like 形式的查询语句嵌套在另一 SQL 中,SQL-like 的嵌套子句可以出现在 SELECT、FROM 和 WHERE 子句的任意位置。 在…

GBASE南大通用分享如何更新row类型表达式

从 SPL 例程内,您可使用 ROW 变量来更新 row 类型表达式。下图展示当员工的基本薪 酬按某一百分比增长时,用于更新 emp_info 表的 SPL 过程 emp_raise。 用于更新 emp_info 表的 SPL 过程。 SELECT 语句将来自 emp_info 表的 salary 列的行选择到 ROW …

阿富汗塔利班兴起时的比赛代码3475:练85.3 删数问题(Noip1994)

【题目描述】 输入一个高精度的正整数n�,去掉其中任意s�个数字后剩下的数字按原左右次序组成一个新的正整数。编程对给定的n�和s�,寻找一种方案使得剩下的数字组成的新数最小。 输出新的正整数。&#xff0…

Java项目:125SpringBoot教室预约管理系统

博主主页:Java旅途 简介:分享计算机知识、学习路线、系统源码及教程 文末获取源码 一、项目介绍 教室预约管理系统使用SpringBootMybatis进行开发,系统整体分为前台和后台,后台主要对教室,用户等信息进行管理&#xf…

SpringBoot+MyBatis使用pagehelper分页插件及其注意事项(含解决分页不生效问题)

1 前言 近期在做项目的时候,遇到了一个问题:在使用MyBatis的分页插件(pagehelper)时,发现其分页不生效,找了许多方法才得以解决,故写下这篇文章记录一下,帮助跟我遇到同样问题的同学…

c#读取getman网址中的json

using System; using System.Net.Http; using System.Threading.Tasks;class Program {static async Task Main(){// 替换为实际的 Getman 网址string apiUrl "https://your-getman-url.com/api/data";try{using (HttpClient client new HttpClient()){// 发送 GET…

Redisson 延时队列 监听线程中调用 return 造成线程终止 消息积压 无法被消费

博文目录 文章目录 结论过程流程 结论 单线程 while(true) 监听 Redisson 延时队列有几个注意点 死循环内必须加 try-catch 捕获 Throwable, 防止报错终止线程明确线程方法体死循环内的 return 语句是否会导致方法体执行结束, 进而导致线程终止, 考虑是否需要以 continue 替…

HTTP API 认证技术详解(五):Token-based Authentication

目录 什么是 Token-based Authentication 认证 Token-based Authentication 认证的特点 Token-based Authentication 认证的流程 安全考虑 关于 JWT 小结 HTTP API 认证技术主要用于验证客户端身份,并确保只有经过授权的实体才能访问受保护的资源。随着安全需…

无人机航迹规划(六):七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划(提供MATLAB代码)

一、七种算法(DBO、LO、SWO、COA、LSO、KOA、GRO)简介 1、蜣螂优化算法DBO 蜣螂优化算法(Dung beetle optimizer,DBO)由Jiankai Xue和Bo Shen于2022年提出,该算法主要受蜣螂的滚球、跳舞、觅食、偷窃和繁…

阿赵UE学习笔记——解决UE资源不能正常显示缩略图的问题

阿赵UE学习笔记目录 大家好,我是阿赵。   这里分享一个虚幻引擎使用小技巧。在使用虚幻引擎的过程中,经常会遇到有些资源在重新打开项目的时候,会看不到缩略图,而是显示默认资源的图标: 这个时候,第一种…

java web mvc-06-play framework intro

拓展阅读 Spring Web MVC-00-重学 mvc mvc-01-Model-View-Controller 概览 web mvc-03-JFinal web mvc-04-Apache Wicket web mvc-05-JSF JavaServer Faces web mvc-06-play framework intro web mvc-07-Vaadin web mvc-08-Grails 开源 The jdbc pool for java.(java …

每日一题——LeetCode1331.数组序号转换

方法一 排序哈希Map 首先用一个数组保存排序完的原数组,然后用一个哈希表保存各元素的序号,最后将原属组的元素替换为序号后返回。 var arrayRankTransform function(arr) {let set new Set(arr)let sortArrArray.from(set).sort((a,b)>a-b)let ma…