文章目录
MySQL从入门到高级
9.触发器
一种特殊的存储过程,触发器对数据库表中的数据执行DML操作时自动出发该SQL片段的执行,无需手动调用
作用:可协助应用数据库端确保数据的完整性,日志记录,数据校验等操作。
注意:现在触发器还只支持行级触发,不支持语句级触发。
9.1 特性
-
I 、D 、U条件下会触发
-
在增删改前或后时触发
-
针对每一行执行
-
定义在表上,附着在表上
9.2 操作
9.2.1 创建只有一个执行语句的触发器
语法:
create trigger 触发器名 before| after 触发事件
on 表名 for each row
执行语句;
9.2.2 创建有多个执行语句的触发器
语法:
create trigger 触发器名 before| after 触发事件
on 表名 for each row
begin
执行语句列表
end;
9.2.3 NEW与OLD
触发器类型 | NEW和OLD的使用 |
---|---|
INSERT | NEW表示将要或已经新增的数据 |
UPDATE | OLD表示修改前的数据,NEW表示将要或已修改后的数据 |
DELETE | OLD表示将要或已删除的数据 |
语法:NEW.columnName
- columnName为相应数据表某一列名
9.3 注意事项
-
不能对本表进行insert, update, delete操作,避免递归循环触发
-
尽量少用触发器,数据多的时候,效率较低
-
触发器针对每一行的,对增删改非常频繁的表上不要使用触发器,因为触发器会非常消耗资源
11.存储引擎
-
MySQL的核心就是存储引擎
-
数据库存储引擎是数据库底层软件组织,数据库管理系统使用数据引擎进行创建、查询、更新和删除数据
-
不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能。
-
现在许多不同的数据库管理系统支持多种不同的数据引擎
-
可使用SHOW ENGINES指令,查看Mysql所有的执行引擎,默认引擎为InnoDB支持事务,行级锁定和外键
分类:
-
MyISAM
-
InnoDB
-
Memory
-
Archive
-
Federated
功能 | MyISAM | Memory | InnoDB |
---|---|---|---|
存储限制 | 256TB | RAM | 64TB |
事务 | 不支持 | 不支持 | 支持 |
全文索引 | 支持 | 不支持 | 不支持 |
B树索引 | 支持 | 支持 | 支持 |
哈希索引 | 不支持 | 支持 | 不支持 |
集群索引 | 不支持 | 不支持 | 支持 |
数据索引 | 不支持 | 支持 | 支持 |
数据压缩 | 支持 | 不支持 | 不支持 |
空间使用率 | 低 | N/A | 高 |
外键 | 不支持 | 不支持 | 支持 |