MySQL自学笔记
使用MySQL 5.5以及MySQL自带命令客户端
触发器:trigger
MySQL中,触发器用来监视某种情况并出发某种操作
比如在一个电子商务中,下订单后库存应该相应的减少,这两个逻辑可以看作是一个整体。
触发器可以监视:增、删、改,可以触发的操作:增、删、改
* 触发器有如下四要素:
1. 监视地点
2. 监视事件
3. 触发时间
4. 触发事件
创建触发器
语法格式如下:create trigger triggerName //触发器名称 after/before //触发时间 insert/update/delete //监视事件 on tableName //监视地点 for each row begin SQL语句 # 一句或者多句,得在insert/update/delete 范围内 //触发事件 end; # MySQL默认是以英文分号`;`作为结束符,但是如果SQL语句有多句的话,可以修改一下结束符,在SQL中用`;`作为一个句子的结束,在整个语句最后用新设置的结束符来结束 # 修改结束符:比如将结束符修改为`$`:`delimiter $`删除触发器:
drop trigger triggerName;查看触发器:
show triggers;触发时间的区别:before/after
- before:在监视事件前触发,即触发的语句先于监视的增、删、改,这样就有机会判断修改即将发生的操作
- after:在监视事件后触发,即触发语句是在监视的事情完成后才发生,其无法影响监视事件的动作
在触发器中引用行的值
- insert:对insert而言,新增加的行,用
new来表示,对行中列的值用new.colName来表示 - delete:对delete而言,原来的行被删掉了,想要引用被删掉的这一行数据,可以使用
old来表示,对行中的数据用old.colName来表示 - update:对update而言,对于被修改的行,引用修改前的数据用
old.colName,引用修改后的数据用new.colName
- insert:对insert而言,新增加的行,用
使用场合:
- 向一张表中添加或者删除记录时,需要在相关表中进行同步操作
- 当表上某列数据和其他表中的数据有联系的时候。比如可以通过设计触发器判断客户累计欠款是否超出最大限度
- 需要对某一张表进行跟踪的时候
浙公网安备 33010602011771号