- MySQL触发器
- 创建只有一个执行语句的触发器基本形式:
CREATE TRIGGER 触发器名 BEFORE | AFTER 触发事件
ON 表名 FOR EACH ROW 执行语句 - 创建具有多个执行语句的触发器
基本形式:
CREATE TRIGER 触发器名称 BEFORE | AFTER 触发事件
ON 表名 FOR EACH ROW
BEGIN
执行语句列表
END - 注意:在MySQL中,一个表在相同的时间和相同的触发时间只能创建一个触发器,如触发事件INSERT,触发时间AFTER的触发器只能有一个,但是可以定义BEFORE的触发器。
- 创建只有一个执行语句的触发器基本形式:
- 查看触发器
- SHOW TRIGGERS;
- SELECT * FROM information_schema.triggers;
或者:SELECT * FROM information_schema.triggers WHERE TRIGGER_NAME='触发器名称';
information_schema是MySQL中默认存在的库,用于记录触发器信息的数据表。
- 应用触发器
触发器中不能包含START TRANSCATION、COMMIT或ROLLBACK等关键词,也不能包含CALL语句。 - 删除触发器
DROP TRIGGER 触发器名称
- MySQL视图
- 视图是一个虚表,是从数据库中一个或多个表中导出来的表,其内容由查询定义。数据库中只存放了视图的定义,没有存放视图中的数据。视图中的数据是依赖于原来的表中的数据的。
- 视图是存储在数据库中的查询的sql语句,它主要出于安全和可使复杂的查询易于理解和 使用。
- 视图作用:
- 简单性
- 安全性
- 逻辑数据独立性
- 创建视图
- 查看用户是否具有创建视图的权限
select select_priv,create_view_priv from mysql.user where user='用户名'; - 创建视图
CREATE [ALGORITHM={UNDEFINDE | MERGE | TEMPTABLE}]
VIEW 视图名 [(属性清单)]
AS SELECT 语句
[WITH [CASCADED | LOCAL] CHECK OPTION]; - 创建视图注意事项
- 有创建视图的权限
- select语句不能包含from子句中的子查询;
- select语句不能引用系统或用户变量
- select语句不能引用预处理语句参数
- 在存储子程序内,定义不能引用子程序参数或局部变量
- 在定义中引用的表或视图必须存在。
- 在定义中不能引用temporary表,不能创建temporary视图;
- 视图定义中命名的表必须存在
- 不能将触发器与视图关联在一起
- 在视图定义中允许使用order by,但是,如果从特定视图进行选择,而该视图使用了具有自己order by的语句,它将被忽略
- 查看用户是否具有创建视图的权限
- 查看视图
- DESCRIBE/DESC 视图名;
- SHOW TABLE STATUS LIKE ‘视图名’;
- 修改视图
- CREATE OR REPLACE [ALGORITHM={UNDEFINDE | MERGE | TEMPTABLE}]
VIEW 视图 [(属性清单)]
AS SELECT 语句
[WITH [CASCADED | LOCAL] CHECK OPTION] - ALTER
- CREATE OR REPLACE [ALGORITHM={UNDEFINDE | MERGE | TEMPTABLE}]
- 更新视图
- 视图中的数据虽然可以更新,但是有很多的限制。一般情况下,最好将视图作为查询数据的虚拟表,而不要通过视图更新数据。
- 删除视图
- DROP VIEW IF EXISTS <视图名> [RESTRICT | CASCADE]