instead of 触发器的用法

转载 2007年10月10日 18:30:00

 instead of 触发器的用法

INSTEAD OF 触发器的主要优点是可以使不能更新的视图支持更新。基于多个基表的视图必须使用    

       INSTEAD OF 触发器来支持引用多个表中数据的插入、更新和删除操作。INSTEAD OF 触发器的另一个优点是使您得以编写这样的逻辑代码:在允许批处理的其他部分成功的同时拒绝批处理中的某些部分。

       Transact-SQL 语句创建两个基表、一个视图和视图上的 INSTEAD OF 触发器。以下表将个人数据和业务数据分开并且是视图的基表。

/*在视图上定义 instead of insert 触发器以在一个或多个基表中插入数据。*/

--部门表

create table dept

(

    d_id int primary key,

    d_name varchar(20)

)

--员工表

create table emp

(

   e_id int primary key,

   e_name varchar(20),

   d_id int references dept(d_id)

)

select * from emp

drop view v

create view v

as

select e_id,e_name,d.d_id,d_name from emp e,dept d where e.d_id=d.d_id

select * from v

insert into v values(1001,'张珊',101,'销售部')

/*******************使用instead of 触发器******************/

drop trigger de_em_insert

go

create trigger de_em_insert

on v

instead of insert

as

begin

    if (not exists (select d.d_id from dept d, inserted i where d.d_id = i.d_id))

     insert into dept select d_id,d_name from inserted

   if (not exists (select e.d_id from emp e, inserted i where e.d_id = i.d_id))

   insert into emp select e_id,e_name,d_id from inserted

else

   update emp set e_id = i.e_id,e_name = i.e_name from emp e, inserted i where e.d_id = i.d_id

end

       可以在视图或表中定义 INSTEAD OF DELETE 触发器,以代替 DELETE 语句的标准操作。通常,在视图上定义 INSTEAD OF DELETE 触发器以便在一个或多个基表中修改数据。   

       可在视图上定义 INSTEAD OF UPDATE 触发器以代替 UPDATE 语句的标准操作。通常,在视图上定义 INSTEAD OF UPDATE 触发器以便修改一个或多个基表中的数据。

INSTEAD OF 触 发 器

 为什么要使用触发器     触发器的主要作用就是其能够实现由主键和外所不保证的复杂的参照完整性和数据的一致性。除此之外触发器还有其它许多不同的功能  触发器定义      触发器实际上是一种特殊的存...
  • zengzhengliang
  • zengzhengliang
  • 2006-04-29 10:46:00
  • 8819

instead of 触发器的用法

 instead of 触发器的用法INSTEAD OF 触发器的主要优点是可以使不能更新的视图支持更新。基于多个基表的视图必须使用            INSTEAD OF 触发器来支持引用多个表...
  • vigorlin
  • vigorlin
  • 2007-10-10 18:30:00
  • 3344

关于 INSTEAD OF 触发器

快生三星了,好歹也得在CSDN上留点什么以示水平不低吧,但总是不知道该写什么,只善于回答问题,不善于总结问题。近来在坛子上经常看到有问触发器的,而且大多是要求实现在一定条件下不向表中进行操作的触发器,...
  • qianjin036a
  • qianjin036a
  • 2011-01-13 22:13:00
  • 11092

INSTEAD OF 触发器

实现在一定条件下不向表中进行操作的触发器也可以用 AFTER | FOR 触发器,方法是对系统临时表 inserted 表或者 deleted 表进行检查,发现不能操作的,便用 ROLLBACK 对表...
  • Yulay01
  • Yulay01
  • 2013-05-25 21:33:00
  • 493

instead of 触发器

instead of 触发器 1用于执行一个替代操作来代替触发事件的操作,最终instead of 触发器的触发事件本身不会被执行,不像DML触发器那样,DML触发事件本身最终会被执行.2inste...
  • zhou920786312
  • zhou920786312
  • 2017-05-25 12:09:52
  • 501

触发器---FOR INSERT与INSTEAD OF

注:下面的实例由CSDN论坛MS-SQL server版块中internetcsdn (公元1979年8月10日) 网友提供测试一.--------------create table tb1 (id...
  • PPLUNCLE
  • PPLUNCLE
  • 2004-06-24 16:06:00
  • 1979

SQL AFTER触发器和INSTEAD OF触发器的区别

原址:http://bbs.csdn.net/topics/300074591     by  qianjin036a-晴天 INSTEAD OF 触发器用来代替通常的触发动作,即当对表进行IN...
  • zark721
  • zark721
  • 2017-04-23 11:05:14
  • 804

oracle INSTEAD OF 触发器

INSTEAD OF 触发器只作用于视图上,不能作用
  • feier7501
  • feier7501
  • 2014-04-07 22:12:08
  • 936

使用 Oracle Instead of 触发器

今天在论坛上遇到个触发器的问题,需求如下:向一个表中插入一条新记录 如(2007 ,a)触发器  查询该表中如果有(2007 ,a)这条数据就更新这条数据中的另一个字段  如果没有就插入一条新记录触发...
  • sunyujia
  • sunyujia
  • 2007-09-27 21:56:00
  • 6109
收藏助手
不良信息举报
您举报文章:instead of 触发器的用法
举报原因:
原因补充:

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