oracle trigger(触发器)字段触发
2015-04-01 10:37
513 查看
说到oracle的触发器,一直以来都以为只能以表触发,今天有需求某个字段的值改变后触发一系列动作,原来想这个表改变再触发,后来想了一下,触发器本来很耗性能,如果这个表的每个字段更改都触发,这样做就造成性能浪费,查了一下发现原来可以字段触发:
语法:
[sql] view
plaincopy
CREATE [OR REPLACE] TRIGGER trigger_name
{BEFORE | AFTER }
{INSERT | DELETE | UPDATE [OF column [, column …]]}
[OR {INSERT | DELETE | UPDATE [OF column [, column …]]}...]
ON [schema.]table_name | [schema.]view_name
[REFERENCING {OLD [AS] old | NEW [AS] new| PARENT as parent}]
[FOR EACH ROW ]
[WHEN condition]
例子:
[sql] view
plaincopy
create or replace trigger 触发器名
after update of 字段
on 表
for each row
when (new.字段=条件)
------------------------------------------------------------------- 验证 -----------------------------------------------------------------------
创建diy_test表:
[sql] view
plaincopy
SQL> create table diy_test
2 (a number,
3 b number
4 )
5 /
表已创建。
往diy_test插入数据:
[sql] view
plaincopy
SQL> insert into diy_test values(1,1);
已创建 1 行。
创建diy_test_1表:
[sql] view
plaincopy
SQL> create table diy_test_1
2 (a number,
3 c number
4 )
5 /
表已创建。
往diy_test_1插入数据
[sql] view
plaincopy
SQL> insert into diy_test_1 values(1,1);
已创建 1 行。
创建字段级触发器:当diy_test的字段b更改为2,则把diy_test_1的字段c改成2
[sql] view
plaincopy
SQL> create or replace trigger diy_test_trigger
2 after update of b
3 on diy_test
4 for each row
5 when (new.b=2)
6 begin
7 update diy_test_1 set c=2 where a= :new.a;
8 end;
9 /
触发器已创建
测试1:先将diy_test的b更改成3
[sql] view
plaincopy
SQL> update diy_test set b=3 where a=1;
已更新 1 行。
SQL> select * from diy_test_1;
A C
---------- ----------
1 1
结果显示diy_test_1的字段c没发生改变
测试2:将diy_test的b更改成2
[sql] view
plaincopy
SQL> update diy_test set b=2 where a=1;
已更新 1 行。
SQL> select * from diy_test_1;
A C
---------- ----------
1 2
结果显示diy_test_1的字段c变成2,触发成功。
语法:
[sql] view
plaincopy
CREATE [OR REPLACE] TRIGGER trigger_name
{BEFORE | AFTER }
{INSERT | DELETE | UPDATE [OF column [, column …]]}
[OR {INSERT | DELETE | UPDATE [OF column [, column …]]}...]
ON [schema.]table_name | [schema.]view_name
[REFERENCING {OLD [AS] old | NEW [AS] new| PARENT as parent}]
[FOR EACH ROW ]
[WHEN condition]
例子:
[sql] view
plaincopy
create or replace trigger 触发器名
after update of 字段
on 表
for each row
when (new.字段=条件)
------------------------------------------------------------------- 验证 -----------------------------------------------------------------------
创建diy_test表:
[sql] view
plaincopy
SQL> create table diy_test
2 (a number,
3 b number
4 )
5 /
表已创建。
往diy_test插入数据:
[sql] view
plaincopy
SQL> insert into diy_test values(1,1);
已创建 1 行。
创建diy_test_1表:
[sql] view
plaincopy
SQL> create table diy_test_1
2 (a number,
3 c number
4 )
5 /
表已创建。
往diy_test_1插入数据
[sql] view
plaincopy
SQL> insert into diy_test_1 values(1,1);
已创建 1 行。
创建字段级触发器:当diy_test的字段b更改为2,则把diy_test_1的字段c改成2
[sql] view
plaincopy
SQL> create or replace trigger diy_test_trigger
2 after update of b
3 on diy_test
4 for each row
5 when (new.b=2)
6 begin
7 update diy_test_1 set c=2 where a= :new.a;
8 end;
9 /
触发器已创建
测试1:先将diy_test的b更改成3
[sql] view
plaincopy
SQL> update diy_test set b=3 where a=1;
已更新 1 行。
SQL> select * from diy_test_1;
A C
---------- ----------
1 1
结果显示diy_test_1的字段c没发生改变
测试2:将diy_test的b更改成2
[sql] view
plaincopy
SQL> update diy_test set b=2 where a=1;
已更新 1 行。
SQL> select * from diy_test_1;
A C
---------- ----------
1 2
结果显示diy_test_1的字段c变成2,触发成功。
相关文章推荐
- Oracle 触发器 行触发,对同行其他字段进行修改。
- oracle trigger 字段触发
- Day60-Oracle04 - PLSQL编程、游标cursor、例外exception、存储过程(procedure)、存储函数(function)、java调用存储过程、触发器(trigger)
- oracle 字段自动编号——触发器实现,非调用序列方法
- Oracle 过程(Procedure)、函数(Function)、包(Package)、触发器(Trigger)
- sql server ,oracle中触发器对同一个表进行触发操作。
- oracle PL/SQL(procedure language/SQL)程序设计之触发器(trigger)
- Ext.form.field.Trigger触发字段
- oracle 触发器写法|oracle trigger 语法
- [转 逆水行船]Oracle中创建表,创建序列,创建自增字段,添加注释, 添加记录,添加触发器,提交
- SQL Server 触发器 表的特定字段(一个字段)更新时,触发Update触发器
- Oracle 中序列(sequence)和触发器(trigger)的使用
- 创建序列和触发器实现Oracle字段自增功能
- 触发器实现对插入数据的字段更改 Oracle+SQL Server
- ORACLE PL/SQL 触发器(trigger)学习笔记
- Oracle-trigger触发器解读
- Oracle PL/SQL编程之触发器(trigger)
- oracle 触发器写法|oracle trigger 语法
- oracle 游标,函数 function , 存储过程 PROCEDURE , 触发器 Trigger
- Oracle中创建表,创建序列,创建自增字段,添加注释, 添加记录,添加触发器,提交