再求一触发器代码

liyuyu 2008-04-02 10:42:24
有表A(A_1,A_2) 表B(B_1,B_2)
如果update A 表
如果没有更新前的A_2值为UP,就在没有更新前A_1=B_1处设置B_2='UP'
如果没有更新前的A_2值为DOWN ,就是没有更新前的A_1=B_1处设置B_2='DOWN'
如果更新后的A_2值为Up,就更新在更新后的A_1=B_1处设置B_2='UP'
如果更新后的A_2值为DOWN,就更新在更新后的A_1=B_1处设置B_2='DOWN'
如果delete A 表
如果没有更新前的A_2值为UP,就在没有更新前A_1=B_1处设置B_2=''
如果没有更新前的A_2值为DOWN ,就是没有更新前的A_1=B_1处设置B_2='DOWN'


...全文
89 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
liyuyu 2008-04-02
  • 打赏
  • 举报
回复
解释一下:
有表A(A_1,A_2) 表B(B_1,B_2)
假设update前A_1叫old_A_1,old_A_2
假设update后A_1叫new_A_1,new_A_2
if old_A_2 ='UP' then
UPdate B set B_2='UUUUU' where old_A_1=B_1;

if old_A_2 ='DOWN' then
UPdate B set B_2='DDDDD' where old_A_1=B_1;
if new_A_2='UP' then
UPdate B set B_2='FFFF' where new_A_1=B_1;

if new_A_2='DOWN' then
UPdate B set B_2='GGGG' where new_A_1=B_1;


utpcb 2008-04-02
  • 打赏
  • 举报
回复

发表于:2008-04-02 10:52:232楼 得分:0
SQL code
create trigger tri_A on A
for update
as
if update(A_1) and exists(select 1 from inserted i,deleted d where i.A_1=d.A_1 and isnull(i.A_2,'')<>isnull(d.A_2,''))
begin
update B
set B_2=i.A_2
from inserted i,deleted d
where B.b_1=i.A_1 and i.A_1=d.A_1 and isnull(i.A_2,'')<>isnull(d.A_2,'')
end
GO
create trigger trd_A on A
for delete
as
update B
set B_2=case d.A_2 when 'up' then '' else 'down' end
from deleted d
where B.A_1=d.B_1
GO



wangxuelid 2008-04-02
  • 打赏
  • 举报
回复
dd
gahade 2008-04-02
  • 打赏
  • 举报
回复
没测试.

楼主说得有点复杂,不知道我写得正不正确
gahade 2008-04-02
  • 打赏
  • 举报
回复

create trigger tri_A on A
for update
as
if update(A_1) and exists(select 1 from inserted i,deleted d where i.A_1=d.A_1 and isnull(i.A_2,'')<>isnull(d.A_2,''))
begin
update B
set B_2=i.A_2
from inserted i,deleted d
where B.b_1=i.A_1 and i.A_1=d.A_1 and isnull(i.A_2,'')<>isnull(d.A_2,'')
end
GO
create trigger trd_A on A
for delete
as
update B
set B_2=case d.A_2 when 'up' then '' else 'down' end
from deleted d
where B.A_1=d.B_1
GO
-狙击手- 2008-04-02
  • 打赏
  • 举报
回复
用点数据说明 一下呀
flairsky 2008-04-02
  • 打赏
  • 举报
回复
你能不能给点实测数据,我写的和上面的差不多

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧