替代触发器的使用

原创 2006年06月05日 17:46:00

当需要针对视图创建触发器来处理业务逻辑,或数据流程时, 可以用替代触发器来实现对视图相关表的操作.

SQL> create table user_info ( id number,name varchar2(200));
 
Table created.
 
SQL> insert into user_info values(1,'DINYA');
 
1 row created.
 
SQL> commit;
 
Commit complete.
 
SQL> create table skill( id number,skill varchar2(300),user_id number);
 
Table created.
 
SQL> insert into skill values(1,'打字',1);
 
1 row created.
 
SQL> commit;
 
Commit complete.
 
SQL> create or replace view user_skills as select a.id ,a.name,b.skill from user_info a,skill b wher
e a.id=b.user_id;
 
View created.
 
SQL> select * from user_skills;
 
        ID   NAME                  SKILL
---------------   --------------------------------   -----------------------------------------------
         1    DINYA                 打字
 
 
SQL> update user_skills t set t.skill='上网' ;
update user_skills t set t.skill='上网'
                         *
ERROR at line 1:
ORA-01779: cannot modify a column which maps to a non key-preserved table
 
 
SQL> create or replace trigger user_skills_update
 2 instead of update on user_skills
 3 for each row
 4 begin
 5      update skill set skill=:new.skill where user_id=:old.id;
 6 end ;
 7 /
 
Trigger created.
 
SQL> update user_skills t set t.skill='上网' where t.id=1;
 
1 row updated.
 
SQL> commit;
 
Commit complete.
 
SQL> select * from skill;
 
        ID   SKILL           USER_ID
----------------- --------------------- ---------------------------------------------------------
         1    上网            1
 
SQL>
#
Dinya

Oracle替代触发器

由于视图有可能是由多个表进行关联而成,这种情况下,直接通过更新视图来更新基表是不可行的,这个时候我们就可以通过替代触发器来工作了。   示例: --准备操作 INSERT INTO DEPT(...
  • bwf_erg
  • bwf_erg
  • 2016年10月25日 16:42
  • 1057

替代触发器的使用

当需要针对视图创建触发器来处理业务逻辑,或数据流程时, 可以用替代触发器来实现对视图相关表的操作. SQL> create table user_info ( id number,name varch...
  • dinya2003
  • dinya2003
  • 2006年06月05日 17:46
  • 2707

oracle中触发器的使用

本篇主要内容如下: 8.1 触发器类型 8.1.1 DML触发器 8.1.2 替代触发器 8.1.3 系统触发器 8.2 创建触发器 8.2.1 触发器触发次序 ...
  • zndxlxm
  • zndxlxm
  • 2013年03月14日 17:03
  • 6332

转帖 把触发器说透(个人感觉写的还不错)

窗体顶端 ORACLE PL/SQL编程之八: 把触发器说透  本篇主要内容如下:8.1 触发器类型8.1.1 DML触发器8.1.2 替代触发器8.1.3 系统触发器8.2 创建触发器8.2.1 触...
  • kimifdw
  • kimifdw
  • 2011年05月02日 22:17
  • 2392

oracle创建视图触发器

1.视图触发器语法 2.视图触发器作用 3.视图触发器实例
  • baidu_37107022
  • baidu_37107022
  • 2017年07月08日 00:01
  • 651

触发器

数据库触发器是存储于数据库的命名PL/SQL语句块,当触发事件发生时它们会隐含执行。 触发事件可以是如下任何一种: 1> 处理数据库表的DML语句(如INSERT,UPDATE或者DELETE)。...
  • slowtech
  • slowtech
  • 2016年03月10日 15:11
  • 98

Mysql不得不用储存过程代替触发器

这是发在csdn的问题,没人回答,只好自己动手了。翻书后发现触发器的概念能很好地解决问题,但很快发现.... unique索引会先于触发器要触发,update数据时,如果引起索引冲突,直接就报错了,...
  • Allen_Tsang
  • Allen_Tsang
  • 2015年08月11日 20:02
  • 781

SQLite用触发器来替代外键约束

SQLite用触发器来替代外键约束 CREATE TABLE [Category] (   [Pkid] INTEGER  PRIMARY KEY AUTOINCREMENT NOT NULL,...
  • tangzhongxin
  • tangzhongxin
  • 2010年03月18日 10:00
  • 1728

oracle中触发器有什么作用

触发器    触发器是一种特殊类型的存储过程,当使用下面的一种或多种数据修改操作在指定表中对数据进行修改时,触发器会生效:UPDATE、INSERT   或   DELETE。触发器可以查询其它表...
  • gfangxiong
  • gfangxiong
  • 2012年04月06日 15:16
  • 2053

数据库中Sql语句,存储过程,触发器对性能影响的理解

相比inline sql,很多人更喜欢使用存储过程,为何?很多人会说:“因为存储过程是预编译并且缓存了的,因此比原生sql会更快” 这句话某个时候是正确的,先解释一下依据:sql第一次执行的时候...
  • qq506930427
  • qq506930427
  • 2017年07月19日 14:13
  • 302
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:替代触发器的使用
举报原因:
原因补充:

(最多只允许输入30个字)