视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
sql触发器trigger创建与用法
2020-11-09 10:01:36 责编:小采
文档


dml触发器的激活顺序

1)执行before语句级触发器—如果存在这种触发器

2)对受该语句影响的每一行记录

执行before行级触发器—如果存在这种触发器

执行该语句本身

执行after行级触发器--如果存在这种触发器

3)执行after语句级触发器--如果存在这种触发器


同一种类型的触发器的点火次序没有经过定义。如果该次序很重要的话,那么建议

将所有这些操作组合到一个触发器当中。


3、行级触发器中的关联标识符

触发器的激活语句每处理一行数据,行级触发器就会激活一次。可以在这种行级触

发器内部,访问正被处理的记录行中的数据。这是通过两个关联标识符--:old

和:new—实现的。关联标识符也是pl/sql的一种特殊的绑定变量。标识符前面的冒

号,既说明这二者都是绑定变量,同时也说明它们不是一般的pl/sql变量。pl/sql

编译器会将它们看作下面这个类型的记录:


triggering_table%rowtype


其中triggering_table是在其上定义触发器的表名。于是,下面这种引用


:new.field


就只有当其中的field是该触发表中的字段名时才会有效。


触发语句
:old
:new

insert
未定义—所有字段均为null
触发语句完成的时候,要插入的值

update
更新以前相应记录行的原始值
触发语句完成的时候,要更新的值

delete
删除以前相应记录行的原始值
未定义—所有字段均为null

注意:insert语句上没有定义:old标识符,delete语句上也没有定义:new标识符。

如果再insert语句上使用:old标识符,或者在delete语句上使用:new标识符,

pl/sql并不会产生错误,但是这两个字段值都会为null。


伪记录

虽然在语法构成上,会将:new和:old看作triggering_table%rowtype类型的记录,

但是,实际上它们并不是记录。因此,那些能够在记录上正常执行的操作,并不能

在:new和:old上执行。例如,不能将它们作为一个整体进行赋值。只能对其中的各

个字段分别赋值。

下载本文
显示全文
专题