news 2025/12/23 23:19:11

校园书店运营触发器适配

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
校园书店运营触发器适配

实验背景

以校园书店运营为场景,设计数据库表结构、插入测试数据,完成 4 类触发器的设计与验证,掌握 Oracle 触发器的应用,模拟企业数据完整性保障、操作审计等场景。

一、基础表与用户准备

1. 基础表结构
  • 图书信息表:图书编号、图书名称、售价、库存数量
  • 图书批量操作日志表:日志编号、操作类型(批量插入 / 更新 / 删除)、操作时间、操作人(数据库用户名)
  • 图书销售记录表:销售单号、图书编号、销售数量、销售日期、销售员
  • 图书库存变更明细日志表:日志编号、图书编号、变更类型、变更数量、变更时间、销售员
2. 要求
  • 每个表插入至少 3 条测试数据;
  • 创建多个数据库用户(如前台、管理员),模拟多角色协作操作。

二、语句级触发器

操作意义

监控整表的批量操作,高效记录操作整体情况,是企业高危批量操作审计的常用手段,保障数据操作的可追溯性。

触发器配置
  • 触发对象:图书信息表
  • 触发时机:AFTER
  • 触发事件:INSERT、UPDATE、DELETE
  • 触发类型:语句级(仅触发一次,与受影响行数无关)
  • 功能:执行批量 INSERT/UPDATE/DELETE 后,向 “图书批量操作日志表” 插入 1 条审计记录,记录操作类型、操作时间(SYSDATE)、操作人(USER 函数)
触发器验证

执行批量插入 2 条新图书、批量更新图书售价、批量删除图书,查询日志表,验证是否生成对应记录(每条批量操作仅 1 条日志)。

三、行级触发器

操作意义

对每行数据操作做精细化控制,是企业实现数据联动更新、保障数据一致性的核心手段(如销售扣库存、订单处理)。

触发器配置
  • 触发对象:图书销售记录表
  • 触发时机:BEFORE
  • 触发事件:INSERT
  • 触发类型:行级(FOR EACH ROW,每条新记录触发)
  • 功能:
    1. 校验库存:若销售数量>库存,用RAISE_APPLICATION_ERROR抛出自定义异常(如 - 20001,“库存不足”),终止插入;
    2. 扣减库存:库存充足时,更新 “图书信息表” 的库存数量(原库存 - 销售数量);
    3. 记录明细:向 “图书库存变更明细日志表” 插入 1 条销售出库记录。
触发器验证
  • 插入合法销售记录(数量≤库存):验证库存扣减、日志记录是否生效;
  • 插入超库存记录:验证异常是否触发。

四、INSTEAD OF 触发器

操作意义

解决不可更新视图的操作问题,让用户直观操作视图,后台自动转换为基表操作,广泛应用于企业报表系统。

触发器配置
  1. 创建视图:基于 “图书信息表” 和 “图书销售记录表” 的销售统计视图(含图书编号、图书名称、总销售数量);
  2. 触发对象:销售统计视图
  3. 触发时机:INSTEAD OF
  4. 触发事件:UPDATE
  5. 功能:将视图修改 “总销售数量” 的操作,转换为向 “图书销售记录表” 插入新记录的操作:
    1. 计算新总数量与原数量的差值(差值需为正,否则抛异常);
    2. 向销售表插入 1 条销售记录,销售数量为该差值,销售员填 “视图更新”。
触发器验证
  • 修改视图中某商品总销售数量为更大值:验证销售表是否新增记录、视图数据是否更新;
  • 尝试修改为更小值:验证异常是否触发。

五、LOGON/LOGOFF 触发器

操作意义

是数据库安全审计的重要工具,记录用户访问轨迹,保障数据库安全,是金融、零售等行业的必备配置。

前置准备
  • 用户操作审计表:日志 ID、用户名、操作类型(登录 / 登出)、操作时间
触发器配置
  1. LOGON 触发器
    • 触发时机:AFTER LOGON
    • 功能:向 “用户操作审计表” 插入登录记录;
  2. LOGOFF 触发器
    • 触发时机:BEFORE LOGOFF
    • 功能:向 “用户操作审计表” 插入登出记录。
触发器验证

退出并重新登录数据库,正常退出后再次登录,查询审计表,验证是否生成登录、登出记录。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/20 4:28:29

基于80亿参数的代码专用模型:Seed-Coder-8B-Base性能实测

基于80亿参数的代码专用模型:Seed-Coder-8B-Base性能实测 在现代软件开发节奏日益加快的今天,开发者对“写得更快、错得更少”的需求从未如此迫切。传统的IDE补全功能早已触达能力天花板——它们能识别变量名和函数签名,却无法理解“我正想实…

作者头像 李华
网站建设 2025/12/15 22:16:15

Git rebase保持Qwen-Image-Edit-2509代码提交历史整洁

Git Rebase:打造清晰、可维护的Qwen-Image-Edit-2509开发流程 在AI模型快速迭代的今天,一个功能分支从创建到上线往往经历数十次提交——“修复拼写”、“临时调试”、“合并冲突”……这些琐碎记录若不加整理,最终会变成代码审查时的一团乱麻…

作者头像 李华
网站建设 2025/12/17 8:33:07

老师讲不清的局部变量作用域,这篇用代码帮你讲明白

摘要 在学习 C 语言时,很多人第一次接触“局部变量”“作用域”时会觉得概念抽象,甚至觉得“记住规则就行”。但在真实开发中,如果对变量的作用范围理解不清楚,轻则程序逻辑混乱,重则直接导致数据错误、难以排查的 Bug…

作者头像 李华
网站建设 2025/12/15 22:15:55

FLUX.1-dev镜像部署常见问题汇总:git下载失败怎么办?

FLUX.1-dev镜像部署常见问题汇总:git下载失败怎么办? 在多模态生成模型快速演进的今天,开发者对高质量文生图系统的部署效率提出了更高要求。以FLUX.1-dev为代表的前沿模型镜像,集成了Flow Transformer架构与大规模训练成果&#…

作者头像 李华
网站建设 2025/12/15 22:15:03

dify平台智能对话延迟高?换vLLM镜像立竿见影

dify平台智能对话延迟高?换vLLM镜像立竿见影 在构建企业级AI应用的今天,一个看似简单的“智能客服”功能背后,往往隐藏着复杂的性能挑战。尤其是当用户期待的是秒级响应、多轮连贯对话时,传统的模型推理架构很容易成为系统瓶颈——…

作者头像 李华
网站建设 2025/12/15 22:15:02

《把脉行业与技术趋势》-47- 通用人工智能的核心关键词:通用、自主、创新:“当机器不再只是执行指令的工具,而是开始提出问题、设定目标并创造新可能时——真正的智能才真正降临。”

在人工智能飞速演进的今天,我们常被各种术语包围:大模型、深度学习、生成式AI…… 但当我们拨开技术迷雾,追问“什么是通用人工智能(AGI)”的本质特征时,三个关键词脱颖而出:🔑 通用…

作者头像 李华