以文本方式查看主题

-  课外天地 李树青  (http://www.njcie.com/bbs/index.asp)
--  数据库系统原理课件  (http://www.njcie.com/bbs/list.asp?boardid=19)
----  [求助]SqlServer 实现oracle 中触发器 before delete  (http://www.njcie.com/bbs/dispbbs.asp?boardid=19&id=1089)

--  作者:hj
--  发布时间:2011/9/18 22:00:08
--  [求助]SqlServer 实现oracle 中触发器 before delete

怎么用SqlServer实现 ,在删除一个表的记录 之前,对另外一个表中的记录进行更改。用oracle可以用before delete,但是SqlServer没有before。

 

请给一个具体的例子。多谢!


--  作者:admin
--  发布时间:2011/9/19 9:14:56
--  回复

1)学会使用搜索,如:http://www.baidu.com/s?wd=sqlserver+%B4%A5%B7%A2%C6%F7+before&rsv_bp=0&rsv_spt=3&inputT=16000

 

2)通过改写delete操作,可以实现近似的效果

create table a(aa int primary key);
create table b(bb int references a(aa));
insert into a values(1);
insert into b values(1);
go

 

create trigger tri_delete_a on a
instead of delete
as
begin
 declare @abc int;
 select @abc = aa from deleted;
 delete b where bb = @abc;
 delete a where aa = @abc;
end

 

此时可以发现可以在删除a记录前更改其他表

 


--  作者:hj
--  发布时间:2011/9/19 13:24:32
--  谢谢
谢谢