news 2026/9/3 1:06:04

校园书店运营触发器适配

作者头像

张小明

前端开发工程师

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进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 19:10:45

ACL实验null

1.全网互通; 2、PC1可以访问Telnet R1,不能ping R1 3、PC1不能访问Telnet R2,但可以ping R2 4、PC2和PC1相反3、实验思路1、配置地址 2、配置静态路由,实现全网通 3、配置Telnet,并测试 4、配置ACL,并测试四…

作者头像 李华
网站建设 2026/9/2 16:05:04

CORS跨域配置与安全策略

目录CORS跨域配置与安全策略引言1. CORS基础概念1.1 什么是CORS?1.2 为什么需要CORS?1.3 CORS请求类型1.3.1 简单请求(Simple Request)1.3.2 预检请求(Preflight Request)2. CORS工作原理详解2.1 CORS请求响…

作者头像 李华
网站建设 2026/9/2 10:54:51

STM32 CubeIDE 按键控制LED

开发环境准备STM32CubeIDE(版本 ≥ 1.8.0)STM32F103C8T6 核心板LED 灯按键创建新工程:选择芯片型号 STM32F103C8配置LED与按键的引脚并命名GPIO 配置:代码实现:实现功能:按下KEY1,LED_GREEN灭抬起KEY1,LED_…

作者头像 李华
网站建设 2026/9/2 16:34:13

流量套餐的优势

节省通信成本 流量套餐通常提供比单次购买流量更优惠的价格,长期使用可显著降低通信费用。运营商常推出阶梯式套餐,满足不同用户需求,如大流量包、定向免流等,避免额外支出。使用便捷性 套餐流量自动生效,无需频繁充值…

作者头像 李华
网站建设 2026/9/1 14:31:56

快速上手Seed-Coder-8B-Base:从Ollama下载到本地推理

快速上手Seed-Coder-8B-Base:从Ollama下载到本地推理 在现代软件开发中,代码补全工具早已不再是简单的“自动填充”助手。随着项目复杂度的上升和团队协作的深化,开发者对智能编程支持的需求也从语法提示转向了真正意义上的上下文感知式生成…

作者头像 李华
网站建设 2026/9/1 6:44:11

关于浔川 AI 翻译项目推进建议的公告

关于浔川 AI 翻译项目推进建议的公告近日,社团收到多位成员关于推进浔川 AI 翻译项目的建议信,信中对项目进度滞后问题提出关切,并围绕任务分工、团队协作、资源保障等方面给出了具体建议。社团高度重视各位成员的反馈,第一时间对…

作者头像 李华