课外天地 李树青学习天地数据库系统原理课件 → [求助]SqlServer 实现oracle 中触发器 before delete


  共有23798人关注过本帖树形打印复制链接

主题:[求助]SqlServer 实现oracle 中触发器 before delete

帅哥哟,离线,有人找我吗?
hj
  1楼 博客 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:8 积分:422 威望:0 精华:0 注册:2010/11/20 16:56:50
[求助]SqlServer 实现oracle 中触发器 before delete  发帖心情 Post By:2011/9/18 22:00:08 [只看该作者]

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

 

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



查看使用道具详细信息
获赠金币帖,共获得 0 个金币
 回到顶部
帅哥哟,离线,有人找我吗?
admin
  2楼 博客 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 管理员
等级:管理员 帖子:1945 积分:26736 威望:0 精华:34 注册:2003/12/30 16:34:32
回复  发帖心情 Post By: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记录前更改其他表

 


赠送楼主:0个金币
 回到顶部
帅哥哟,离线,有人找我吗?
hj
  3楼 博客 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:8 积分:422 威望:0 精华:0 注册:2010/11/20 16:56:50
谢谢  发帖心情 Post By:2011/9/19 13:24:32 [只看该作者]

谢谢

赠送楼主:0个金币
 回到顶部