博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql触发器
阅读量:5139 次
发布时间:2019-06-13

本文共 856 字,大约阅读时间需要 2 分钟。

触发器:trigger, 枪击,扳击,引线的意思

一触即发,

作用: 监视某种情况并触发某种操作.

 

 

观察以下场景:

一个电子商城,

商品表,  g

主键

商品名

库存

1

电脑

28

2

自行车

12

 

订单表, o

订单主键

商品外键

购买数量

1

2

3

2

1

5

 

完成下单与减少库存的逻辑

Insert into o (gid,num) values (2,3);  // 插入语句

Update g set goods_num = goods_num - 3 where id = 2;// 更新过程

 

这两个逻辑可以看成一个整体,或者说, insert ---> 引来 update

 

 

用触发器可以解决上述问题.

我们可以监视某表的变化,当发生某种变化时,触发某个操作.

 

 

触发器: 

能监视: 增,删,改

触发操作: 增,删,改

 

四要素:

监视地点

监视事件

触发时间

触发事件

 

创建触发器的语法

Create trigger triggerName 

After/before insert/update/delete  on 表名

For each row #这句话是固定的

Begin

Sql语句;  # 一句或多句,insert/update/delete范围内

End;

删除触发器的语法:

Drop trigger 触发器名

 

查看触发器

Show triggers

 

如何在触发器引用行的值

对于insert而言, 新增的行 用new 来表示,

行中的每一列的值 ,用new.列名来表示.

 

对于 delete来说, 原本有一行,后来被删除,

想引用被删除的这一行,用old,来表示,  old.列名,就可以引用被删行中的值.

 

对于update来说,

被修改的行, 

修改前的数据 ,用 old来表示, old.列名引用被修改之前行中的值

修改后的数据,用new 来表示, new.列名引用被修改之后行中的值

 

转载于:https://www.cnblogs.com/panxuejun/p/5952580.html

你可能感兴趣的文章
npm 常用指令
查看>>
非常棒的Visual Studo调试插件:OzCode 2.0 下载地址
查看>>
判断字符串在字符串中
查看>>
Linux环境下Redis安装和常见问题的解决
查看>>
HashPump用法
查看>>
cuda基础
查看>>
Vue安装准备工作
查看>>
oracle 创建暂时表
查看>>
201421410014蒋佳奇
查看>>
Xcode5和ObjC新特性
查看>>
LibSVM for Python 使用
查看>>
Centos 7.0 安装Mono 3.4 和 Jexus 5.6
查看>>
CSS属性值currentColor
查看>>
java可重入锁reentrantlock
查看>>
浅谈卷积神经网络及matlab实现
查看>>
解决ajax请求cors跨域问题
查看>>
《收获,不止Oracle》pdf
查看>>
LinkedList<E>源码分析
查看>>
Real-Time Rendering 笔记
查看>>
如何理解HTML结构的语义化
查看>>