数据库12-触发器与游标

触发器

概念

触发器

  • 一组SQL语句
  • 当插入,更改,删除,事件发生的时候,触发器自动执行
  • 用以维护数据完整性,或者其他数据处理工作
  • 属于动态完整性约束

分类

根据事件分类

  • DML触发器:发生数据操作事件时调用,包括INSERT UPDATE DELATE
  • DDL触发器:发生数据定义事件调用,包括CREATE DROP DELETE
    根据发生时间和操作分类
  • AFTER触发器:是最常见的触发器,在事件执行之后检查触发条件,若满足则调用触发器
  • BEFORE触发器:在事件执行之前检查触发条件,若满足则调用触发器
  • INSTEAD OF触发器:一般用于视图,事件执行之前检查触发条件,若满足,则用触发器定义的操作代替原来的数据更新操作
    根据执行粒度分类
  • 语句级触发器:执行完一条SQL语句,是DBMS的默认值,关键字为FOR EA CH STATEMENT
  • 元祖级触发器:在每一行触发FOR EACH ROW

触发器操作

创建触发器

1
2
3
4
5
Create|Replace Trigger <触发器名>
Before|After|Instead Of <事件子查询>
[ For Each Row ]
When ( <条件>)
<数据操作>;

删除触发器

1
DROP Trigger <触发器名>

使用触发器可以容易实现参照完整性;

游标

定义

声明游标DECLARE
打开游标OPEN
从一个游标中逐条获取并处理记录信息FETCH
关闭游标CLOSE
以下是一个例子:

1
2
3
4
Open GPA36;
Fetch Next From GPA36 Into
msID, msName,mGPA,mcName,mmajor;
Close GPA36;