DBMS中游标和触发器的区别
1. PL/SQL游标
游标基本上可以称为指向上下文区域的指针。上下文区域是Oracle 在处理SQL 语句时创建的内存区域。游标因此负责保存SQL 语句返回的行。因此,PL/SQL 借助游标来控制上下文区域。活动集基本上是游标所持有的行集。游标可以有两种类型:隐式游标和显式游标。
游标的优点:
- 游标有助于执行逐行处理以及对每一行进行逐行验证。
- 使用游标可以实现更好的并发控制。
- 游标比 while 循环快。
游标的缺点:
- 每次使用更多的资源,因此可能会导致网络往返。
- 更多的网络往返次数会降低性能并降低速度。
2. PL/SQL触发器
触发器基本上是一个程序,它会自动执行以响应某些事件,例如数据库中的修改。执行触发的一些事件是 DDL 语句、DML 语句或任何数据库操作。触发器因此存储在数据库中并进入特定条件匹配时的操作。因此,触发可以在任何模式、表、视图等上定义。有六种类型的触发器:BEFORE INSERT、AFTER INSERT、BEFORE UPDATE、AFTER UPDATE、BEFORE DELETE 和 AFTER DELETE。
触发器的优点:
- 触发有助于跟踪数据库中的所有更改。
- 触发还有助于维护完整性约束。
触发器的缺点:
- 触发很难查看,这使得调试也很困难。
- 过多地使用触发器或在触发器中编写复杂的代码会降低性能。
游标和触发器的区别:
编号 | 游标 | 触发器 |
---|---|---|
1 | 游标是一个指针,用来控制上下文区域,也用来遍历数据库中的记录。 | 触发器是响应某些事件的发生而执行的程序。 |
2 | 通过在触发器中编写declare语句,可以在触发器中创建游标。 | 触发器不能在游标内创建触发器。 |
3 | 游标是为响应 SQL 语句的执行而创建的,因此它以前没有存储。 | 触发器是以前存储的程序。 |
4 | 游标的主要功能是一次从结果集中检索行(逐行)。 | 触发器的主要功能是维护数据库的完整性。 |
5 | 一个游标被激活并因此被创建以响应任何 SQL 语句。 | 触发器响应 DDL 语句、DML 语句或任何数据库操作而执行。 |
6 | 游标的主要缺点是每次占用资源较多,导致网络往返。 | 触发器的主要缺点是它们很难查看,这使得调试非常困难。 |