触发器事干什么的!有什么用呀?(菜鸟)

来源:百度知道 编辑:UC知道 时间:2024/06/07 12:33:03
听到触发器 不知道是干什么的!能不能详细的介绍一下!谢了... ...

Chapter 32. 触发器
Table of Contents
32.1. 触发器行为概述
32.2. 数据改变的可视性
32.3. 用 C 写触发器
32.4. 一个完整的例子
本章描述如何书写触发器函数。 触发器函数可以用 C 或者任何其它可用的过程语言编写。 目前不可能用 SQL 语言书写触发器。

32.1. 触发器行为概述
一个触发器函数可以再一个INSERT,UPDATE, 或者 DELETE 命令之前或者之后执行,要么是对每个被修改的行一次, 要么是每条 SQL 一次。 如果发生触发器事件,那么将在合适的时刻调用触发器的函数以处理该事件。

触发器函数必须在创建触发器之前,作为一个没有参数并且返回trigger类型的函数定义。 (触发器函数通过特殊的 TriggerData 结构接收其输入,而不是用普通函数参数那种形式。)

一旦创建了一个合适的触发器函数,触发器就用 CREATE TRIGGER 创建。同一个触发器函数可以用于多个触发器。

有两种类型的触发器:按行触发的触发器和按语句触发的触发器。在按行触发的触发器里, 触发器函数是为触发触发器的语句影响的每一行执行一次。相比之下,一个按语句触发的触发器是在每执行一次合适的语句执行一次的, 而不管影响的行数。特别是,一个影响零行的语句将仍然导致任何适用的按语句触发的触发器的执行。 这两种类型的触发器有时候分别叫做"行级别的触发器"和"语句级别的触发器"。

语句级别的 "before" 触发器通常在语句开始做任何事情之前触发, 而语句级别的 "after" 触发器在语句的最后触发。 行级别的 "before" 触发器在对特定行进行操作的时候马上触发, 而行级别的 "after" 触发器在语句结束的时候触发(但是在任何语句级别的 "after" 触发器之前)。

按语句触发的触发器应该总是返回 NULL。 如果必要,按行触发的触发器函数可以给调用它的执行者