使用触发器与视图
触发器
什么是触发器
触发器(Trigger
)顾名思义可以在一个事件发生时,自动地执行一段逻辑。当我们需要维护一系列表的信息时,可以使用一些触发器自动维护,虽然这些维护的逻辑放在业务代码中更好一些,但 MySQL 以及其他许多 SQL 提供的触发器也提供了一个解决方案。
相关语法
创建触发器:
1 | CREATE TRIGGER {触发器名} |
删除触发器:
1 | DROP TRIGGER {触发器名}; |
显示触发器:
1 | SHOW TRIGGERS; |
触发器使用示例
- 例如在更新外键时,使用触发器更新主表使两者保持连接。
- 例如插入或更新元素时,使用触发器进行复制逻辑检测,如果非法,禁止更新。
注意事项
- 使用触发器应防止循环递归调用,否则会发生错误。
视图
什么是视图
视图(VIEW
)提供了一张虚拟表,与物理表绑定,可以在其上方便的增删改查物理表上的数据。视图的本质是一段查询代码,这一逻辑通常也可以在业务逻辑中实现。
相关语法
创建视图:
1 | CREATE VIEW {视图名} AS {SELECT 语句}; |
删除视图:
1 | DROP VIEW {视图名}; |
显示视图列表:
1 | SHOW TABLES; -- 可以一并显示视图和物理表 |
视图使用示例
- 使用视图显示联结表
- 使用视图显示包含复杂计算字段的表
注意事项
- 视图是支持修改的,但其修改具有一定限制。例如计算字段无法修改,联结表只能同时修改来自一张表的字段;再比如被聚合的表也是不支持修改的。视图通常被要求支持可能的修改,而禁止不可行的修改,但这个判定逻辑由数据库实现,不同数据库各不相同,甚至在
Sqlite
中视图是只读的。
评论