`

触发器初级学习

阅读更多
[img]


[/img]


[img]

[/img]


[img]

[/img]


[img]

[/img]


测试用到两张表: 库存表g 
create table g(
id int,
name varchar(10),
number int

);

[img]

[/img]



订单表:
create table o(

oid int,
gid int,
much int

);



修改结束控制符:
delimiter $       把以 ; 结尾改为 $结尾。




【一】监听插入的触发器(例如有客户提交了订单)
create trigger t1
after insert on o
for each row
begin
update g set number = number - new.much where id = new.gid;
end$


当向o表中插入一行数据时(哈哈哈,有人买了两头猪),g表中猪的数量也随着减少两头,还剩20头。
[img]

[/img]

当向o表中插入一行数据时(哈哈哈,有人买了四只羊),g表中羊的数量也随着减少四只,还剩15只羊。
[img]

[/img]




【二】监听删除的触发器(例如有客户取消了订单)
#触发器的创建----监听的是delete动作
create trigger t2
after delete on o
for each row
begin
update g set number = number + old.much where id = old.gid;
end$

当从o表删除一行数据(哈哈,买羊的人不买了),g表中羊的数量也相应的增加四只,变为19只羊。
[img]

[/img]
当从o表删除一行数据(哈哈,买猪的人也不买了,fuck),g表中猪的数量也相应的增加两头,变为22头猪。
[img]

[/img]



【三】监听修改的触发器(例如有客户修改了订单)
#触发器的创建----监听的是update动作
create trigger t3
after update on o
for each row
begin
update g set number = number + old.much where id = old.gid;
update g set number = number - new.much where id = new.gid;
end$


有客户首先买了 5头猪,库存中猪的数量较少了5头。
[img]

[/img]

客户觉得猪肉不好吃,就把订单换成了10只羊。库存中猪的数量增加了5头,羊的数量减少了10只。
[img]

[/img]

总结:
触发器四要素:
监视地点、监视事件、触发时间、触发事件。


#修改sql语句的结束符(把结束符由;改为$)
delimiter $


#创建触发器的语法
create trigger triggerName(触发器名字,自定义)
after/before insert/update/delete on 表名
for each row  #这句是固定格式
begin
sql语句; #一句或多句,insert/update/delete范围内
end$ 
(在创建触发器前,把sql的结束符改为了$) 


查看有哪些触发器:
show triggers;

删除触发器:
drop trigger 触发器的名字;


如何在触发器中引用行的值:
一、对于insert而言,新增的行用 new来表示,行中的每一列的值用 new.列名来表示。 
二、对于delete而言,原本有一行,后来被删除,想引用被删除的这一行,用old来表示,用old.列名
    就可以引用被删除行中的值。
三、对于update而言,被修改的行,修改前的数据用old表示,old.列名引用被修改之前行中的值;修改后
    的数据用new来表示,new.列名引用被修改之后行中的值。
  • 大小: 159.7 KB
  • 大小: 158 KB
  • 大小: 131.4 KB
  • 大小: 68.1 KB
  • 大小: 11.3 KB
  • 大小: 11.1 KB
  • 大小: 9.2 KB
  • 大小: 9.6 KB
  • 大小: 4.9 KB
  • 大小: 10.3 KB
  • 大小: 15 KB
分享到:
评论

相关推荐

    数据库初级课件-sql语句初级学习

    "数据库初级课件-SQL语句初级学习"的主题涵盖了基础的SQL语法和在SQL Server中设置用户访问权限的实践。在这个教程中,我们将深入探讨SQL的基本概念以及如何在SQL Server环境下为用户提供安全、有效的访问控制。 ...

    Sqlite初级学习包

    本学习包是专为Sqlite初学者设计的,包含了丰富的文档和代码示例,帮助你快速入门并深入理解SQLite的基本概念和操作。 1. **SQLite基础知识** - 数据库:SQLite是一个自包含的、无服务器的、零配置的、事务性的SQL...

    oracle初级学习操作语句

    ### Oracle初级学习操作语句详解 #### 一、概述 Oracle数据库系统因其高效性和稳定性,在企业级应用中占据着重要地位。SQL(Structured Query Language)作为标准的关系型数据库查询语言,是与Oracle交互的主要手段...

    数据库从初级到高级PPT教程

    本教程《数据库从初级到高级PPT教程》旨在帮助学习者逐步掌握数据库的基础知识,进阶至高级应用,实现从入门到精通的跨越。 首先,我们需要理解数据库的基本概念。数据库(Database)是一个有组织的数据集合,它...

    单片机初级教程-单片机基础课件

    7. **电路设计与分析**:了解基本的数字电路知识,如逻辑门、触发器等,以及电路设计原则。 8. **实验与调试**:进行简单的单片机实验,学习使用示波器、逻辑分析仪等工具进行问题定位和调试。 本教程适合电子工程...

    SQL学习初级课件

    初级SQL学习通常包括以下几个核心知识点: 1. **SQL简介**:SQL代表结构化查询语言,最初由IBM的员工在1970年代设计。它允许用户查询、更新和操作存储在关系数据库中的数据,同时也支持数据库的创建和管理。 2. **...

    阿里云RPA(机器人流程自动化)- 初级入门(可视化).zip

    4. **流程设计**:通过阿里云RPA的设计器,学习者将学会如何创建和编辑工作流,添加和配置各种活动,如键盘操作、鼠标操作、数据处理、条件判断等,以及如何设置流程的触发器和结束条件。 5. **数据处理**:RPA在...

    PLSQL语言初级教程

    - **存储过程、触发器**:学习创建和调用存储过程,以及使用触发器实现自动化操作。 8. **PLSQL性能优化** - **索引优化**:合理创建索引,提升查询速度。 - **查询优化**:避免全表扫描,利用索引,减少子查询...

    Oracle+PL-SQL语言初级教程

    在“Oracle+PL-SQL语言初级教程”中,你将学习到以下几个关键知识点: 1. **SQL基础**:了解SQL的基本语法,包括SELECT语句用于查询数据,INSERT、UPDATE、DELETE用于修改数据,以及如何使用DDL(Data Definition ...

    帝国时代2战役制作宝典初级卷

    《帝国时代2战役制作宝典初级卷》是针对游戏爱好者和潜在的游戏开发者的一份宝贵资源,它深入浅出地介绍了如何在《帝国时代2》及其扩展包《征服者》中创作战役和地图。这份教程旨在帮助玩家理解并掌握游戏内的触发器...

    Autocad VBA初级教程(2020修订版)_cad_

    《AutoCAD VBA初级教程(2020修订版)》是针对初学者设计的一份详细教程,旨在帮助用户掌握如何使用Visual Basic for Applications (VBA)编程来增强AutoCAD的功能。VBA是一种强大的工具,它允许用户创建自定义脚本和宏...

    适合初级学着的数据库实验手册

    数据库是信息管理的核心工具,尤其对于初级学习者来说,掌握其基本原理和操作至关重要。这份“适合初级学着的数据库实验手册”旨在帮助初学者逐步理解数据库的设计与使用,通过实际操作来深化理论知识。 首先,PDM...

    MySQL初级教程

    MySQL是世界上最流行的开源关系型数据库管理系统之一,尤其适合于中小型企业及个人网站。...随着你对MySQL的深入学习,你将能掌握更多高级特性,如事务处理、存储过程和触发器,以及更复杂的查询技巧。

    ORACL深入浅出-初级篇.ppt

    理解如何使用Sqlplus是Oracle初级学习的重要环节,它允许用户直接与数据库交互,执行增、删、查、改等基本操作,以及管理权限和对象。 此外,课程还将深入到Oracle的高级应用,如事务管理,事务是数据库操作的基本...

    php初级必看面试题

    - MySQL5与4的主要区别包括:支持存储过程、触发器、视图、事务处理等增强功能,以及更强大的优化器和InnoDB引擎改进。 4. HTML知识 - 网页制作工具因人而异,常见的有Dreamweaver,代码编辑器有Sublime Text、VS...

    MySQL初级与高级教程

    ### MySQL初级与高级教程知识点概览 #### 一、MySQL基础知识 1. **数据库系统概述** - 数据库系统的组成:数据库(Data)、数据库管理系统(DBMS)、数据库管理员(DBA)。 - 关系型数据库特点:通过表格形式来...

    FPGACPLD设计初级教程.zip

    学习者将学习如何使用布尔表达式简化逻辑电路,以及如何设计和分析触发器、计数器等时序元件。 实验部分是本教程的核心,从实验一至实验八,逐步引导学习者通过实际操作来熟悉设计流程。每个实验可能涵盖一个特定的...

    集成电路设计基础 初级教程

    这个初级教程的幻灯片将涵盖以上所有内容,通过清晰的图表和实例解析,帮助学习者逐步掌握集成电路设计的基础知识。对于想要深入理解和掌握集成电路设计的人来说,这是一份非常宝贵的资源。通过学习,你将能够具备...

    初级电子工程师考证前两期统考题

    初级电子工程师考证通常涉及理论学习与实践操作,旨在提升工程师在实际工作中解决基本问题的能力。 一、电路基础知识 电路基础知识是所有电子工程师的基础,包括电路元件(如电阻、电容、电感)、欧姆定律、...

Global site tag (gtag.js) - Google Analytics