触发器是一类特殊的事务 ,
可以监视某种数据操作(insert/update/delete),
并触发相关操作(insert/update/delete)
概念
触发器是一种特殊的存储过程,当在某个数据表中插入、修改或删除记录时,触发器会自动被触发执行。
特点:
- 触发器与表紧密相连,可以看作是表的一部分。
- 触发器自动执行
- 可实施更复杂的数据完整性约束
- 触发器具备事务的功能
触发器创建的四要素
监视地点(table)
监视事件(insert/update/delete)
触发时间(after/before)
after:当监视事件发生增删改操作后,进行触发
before:先完成触发,在进行增删改。监视事件之前
触发事件(insert/update/delete)
创建触发器的语法
create trigger 触发器名称
after/before (触发时间)
insert/update/delete (监视事件)
on 表名 (监视地址)
for each row --定死的
begin
sql1;
..
sqlN;
End
创建触发器recruit_delete当入库需求取消时,供应商库存数量自动更新
CREATE TRIGGER recruit_delete
AFTER
DELETE
ON recruit
FOR EACH ROW
BEGIN
UPDATE product SET pcount=pcount-old.rcount WHERE pid=old.pid;
END
--事件
DELETE FROM recruit WHERE rid=13;
触发器管理
描述 | 语法 |
---|---|
删除触发器 | DROP trigger 触发器名称 |
查看触发器定义 | SHOW CREATE TRIGGER 搜索触发器名称 |
查看触发器 | SELECT * FROM 触发器名称; |
触发器引用行变量
1、添加:新增一行用new,新增的列new.列名
2、删除:原来有一行,后来删了,想引用被删除的这一行的值用old,列用old.列名
3、修改:修改前的数据,用old,old列名 引用被修改之前行中的值
修改后的数据,用new,new列名引用被修改之后行中的值
事务
指的是一组操作,要么都执行成功,要么都执行失败
使用事务使用InnoDB存储引擎
事务的四大特性
- 原子性:要么都执行成功,要么都失败
- 隔离性:在所有操作未完成之前,其他会话不能看到中间的过程
- 一致性:事务发生前和发生后数据依然匹配
- 持久性:事务产生印象是不能撤销的
存储引擎
一部电影有多种存储格式,比如MP4、avi、exe…,那么同意不电影,在硬盘所占的空间也是不一样的,清晰度也不一样。
一张表也是存在硬盘里,需要知道表的存储方式,存储的方法就是存储引擎
存储引擎:Myisam、InnoDB、BDB、Memory、Archive。