after 表示,在表的一行更改后触发执行该触发器的before 表示,在表的一行更改前将要更改的那一时刻触发触发器的。推荐读一读《oracle 8i pl/sql高级程序设计》刚才是我回的贴
解决方案 »
- 初学ORACLE请高手帮分析下
- pl/sql develop 调试f9问题
- 有人使用DBOne2005来管理数据库吗
- group by 问题 ,简单 高分100
- oracle xe 快捷版 for linux client 怎么设置才能正确连上oracle服务器啊?
- 同样的sql语句为什么9i与10g的计算结果不一样?
- 十分着急,请大家帮我,关于序列的.
- 请问如何在SQLPLUS中执行一个存储过程
- 新手请教:如何创建和已有的数据库内容完全一样的新数据库?
- 怎么在Oracle 中获取某个应用执行的sql语句
- 一个比较难的SQL语句问题~~~!!请各位大侠帮忙~~~~!!!!
- PL/SQL程序不能在winXP下运行?
所以,after insert触发器不允许设置插入值。因为改行已经插入表中。
before insert
on ta
for each row
begin
:new.fa:=:new.fb+:new.fc;
end;
例如:
:new.fb = 1 :new.fc = 2
此时插入的新值 :new.fa = 3
如果改为after触发器
:new.fa 为你insert时代入的值,而不是:=:new.fb+:new.fc;
即:如果你插入字段的值需要在这里计算,用before 触发器,如果你是在别的表里记录插入成功记录,或统计插入的条数,用after
设计触发器
在设计触发器时,Microsoft® SQL Server™ 2000 提供了两种选项: 执行 INSTEAD OF 触发器代替通常的触发动作。INSTEAD OF 触发器还可在带有一个或多个基表的视图上定义,而在这些视图上这些触发器可扩展视图可支持的更新类型。
在执行了 INSERT、UPDATE 或 DELETE 语句操作之后执行 AFTER 触发器。指定 AFTER 与指定 FOR 相同,而后者是 SQL Server 早期版本中唯一可使用的选项。AFTER 触发器只能在表上指定。
该表比较 AFTER 触发器和 INSTEAD OF 触发器的功能。功能 AFTER 触发器 INSTEAD OF 触发器
适用范围 表 表和视图
每个表或视图含触发器数量 ()每个触发动作(UPDATE、DELETE 和 INSERT)含多个触发器 每个触发动作(UPDATE、DELETE 和 INSERT)含一个触发器
级联引用 不应用任何限制 在作为级联引用完整性约束目标的表上限制应用。
执行 晚于:
约束处理
声明引用操作
inserted 和 deleted 表的创建
触发动作
早于:
约束处理
代替: 触发动作
晚于: inserted 和 deleted 表的创建
执行顺序 可指定第一个和最后一个执行 不可用
在 inserted 和 deleted 表中引用 text、ntext 和 image 列 不允许 允许