Oracle(11g)数据库教程之十五:Oracle触发器实例

准备工作:

先启动Oracle,连接数据库

建立两个表:Goods(商品表)、Orders(订单表)

Goods(商品表)

create table Goods
(gid      char(8)  not null    primary key,   --商品编号name    varchar(10),                          --商品名price   decimal(8,2),                         --价格num     int                                   --数量
);

Orders(订单表)

create table Orders
(gid         char(10)   not null,    --商品号name        varchar(10),            --商品名price       decimal(8,2),           --价格onum        int ,                   --订单数量otime       date                    --订单时间
); 

在商品表中导入商品

insert into Goods values('A0001', '橡皮', 2.5,  100);
insert into Goods values('B0001','小楷本', 2.8,  210);
insert into Goods values('C0001','铅笔',  1.2,  120);
insert into Goods values('D0001','计算器', 28,   20);

任务一、建立触发器,订单表中增加订单数量后,商品表商品数量同步减少对应的商品订单出数量

create trigger tri_insert_orders  after insert on orders for each rowdeclarepragma autonomous_transaction;
beginupdate goods set num = num-:new.onum where gid = :new.gid;commit;
end;

验证:

在订单表插入订单,查看商品表相对应商品的数量(原来数量为100)

任务二、建立触发器,实现功能:客户取消订单,恢复商品表对应商品的数量

create trigger tri_cancle_orders after delete on orders for each rowdeclarepragma autonomous_transaction;
beginupdate goods set num= num+:old.onum where gid = :old.gid;commit;
end;

验证:在订单表中删除订单,查看商品表中商品数量

任务三、建立触发器,实现功能:客户修改订单,商品表对应商品数量同步更新

create trigger tri_update_orders  after update on orders  for each rowdeclarepragma autonomous_transaction;
beginupdate goods set num= num+(:old.onum-:new.onum)  where gid = :old.gid;commit;
end; 

验证:

开始,‘A0001’订单数为51,后改为72,查看商品表对应商品数量

任务四、建立触发器,实现功能:对于所下订单,进行判断,如果订单的数量>库存数量,就认为是恶意订单,给出警示语句。

验证:计算器库存为20,商品号:D0001

Oracle(11g)数据库教程之十五:Oracle触发器实例相关推荐

  1. MySQL数据库教程之十五:MySQL触发器实例

    MySQL数据库教程之十五:MySQL触发器实例 准备工作: 先启动Navicat for MySQL,建立数据库 建立两个表:Goods(商品表).Orders(订单表) Goods(商品表) cr ...

  2. 安装Oracle 11g数据库服务器类

    <Oracle达人修炼秘籍:Oracle 11g数据库管理与开发指南>第3章Oracle 11g数据库的安装,本章将介绍如何在32位系统结构的Windows 7操作系统平台上对Oracle ...

  3. oracle数据库的详细安装,Oracle 11g数据库详细安装图文教程

    本教程为大家分享了Oracle 11g数据库详细安装步骤,供大家参考,具体内容如下 1.先到Oracle官网上下载11g oracle Database 11g第 2 版 (11.2.0.1.0)标准 ...

  4. Oracle(11g)数据库教程之十:Oracle操作题 (复习课)

    Oracle(11g)数据库教程之十:Oracle操作题 (复习课) 操作题 Sutdent表的定义 字段名 字段描述 数据类型 主键 非空 Id 学号 INT(10) 是 是 Name 姓名 VAR ...

  5. Oracle 11g 数据库基础教程

    Oracle 11g 数据库基础教程 课堂笔记 系统服务 操作系统通过服务来管理安装好的Oracle 11g数据库产品的运行 在运行Oracle数据库前,要检查数据库服务有没有启动好 开始»控制面板» ...

  6. Oracle数据库:oracle 11g安装教程,已安装好的oracle各个文件夹的作用,oracle用户权限怎么样

    Oracle数据库:oracle 11g安装教程,已安装好的oracle各个文件夹的作用,oracle用户权限怎么样 2022找工作是学历.能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学 ...

  7. Oracle 11g数据库下载安装教程

    Oracle 11g数据库下载安装教程 前言 一.下载 二.安装 1.将下载的两个压缩包,解压至同一文件夹下(可以右键直接解压到当前文件夹),如下 2.进入到database文件夹,双击执行setup ...

  8. ubuntu14.04、CentOS安装oracle 11g数据库【转载】

    出处:https://blog.csdn.net/cainanxing/article/details/78988671 ubuntu14.04.CentOS安装oracle 11g数据库 折腾了好久 ...

  9. oracle11系统安装,Windows系统下安装Oracle 11g R2教程,oracle11g

    Windows系统下安装Oracle 11g R2教程,oracle11g Windows系统下安装Oracle 11g R2教程 Oracle 11g 共有两个大的版本,一个R1(Release 1 ...

最新文章

  1. 博弈论速成指南:那些融入深度学习的经典想法和新思路
  2. elasticsearch原理_ElasticSearch读写底层原理及性能调优
  3. 中双目运算符_C++日志(四十)教你如何以非成员函数的形式重载运算符
  4. C++代码在Sublime Text 3中编译和运行
  5. 机器学习中向量化编程总结记录
  6. python操作系统课程设计_操作系统课程设计.pdf
  7. Linux基础:linux网络接口
  8. linux的增删改查、压缩与解压缩
  9. 关于路由器认证校园网的可行方案.md
  10. 【批量查询IP归属】
  11. Python之动态检测编码chardet
  12. Bitmap、BitSet、RoaringBitmap持久化存储
  13. 隐马尔科夫模型(HMM)学习笔记二
  14. Web前端零基础入门HTML5+CSS3学习笔记补充
  15. 华为往事(九)--邳州开局
  16. java旅游管理面试,旅游管理专业面试问题
  17. 详解python使用金山词霸的翻译功能(调试工具断点的使用)
  18. 问题定义工具和三种问题定义思维模式
  19. 线程定义, 实现方式及代码实现.
  20. python图像处理:全景图片转鱼眼图片(鱼眼矫正)

热门文章

  1. 你凭什么做好互联网?
  2. OI退役记,第九部分,过去和现在
  3. 计算机组成原理 - I/O(输入输出)系统
  4. Polysemy Deciphering Network for Human-Object Interaction Detection论文阅读笔记
  5. 洛谷循环结构(Freshman锻炼牛犇勿喷)
  6. 国产250A霍尔电流传感器产品CH704,可以替换Allegro的ACS758/ACS770/ACS772
  7. n个互异字符串的全排列
  8. 使用qt操作sqlite,报错attempt to write a readonly database
  9. [译] 如何创建一个设计体系来赋能团队 —— 关注人,而非像素
  10. Android启用摄像头失败或者黑屏问题的几点原因