请各位高手一定帮助解决这条触发器问题!

setfocus 2003-11-14 05:39:51
我的库中有两个表T1,T2

T1中有两个字段F1,F2(标志位)

T2中有两个字段F3,F4

我要在T1中建一个触发器TG1如果T1中的增删改操作时影响T2中的F3字段变化,具体如下:
添加操作:
如果在T1表中添加一个新的数据,并且添加的标志位F2是1的话,那么就把这个添加的新的数据的F1的值,“,”+F1 添加到T2表中的F3字段值的后面,好比,添加了一个A,那么原来F3的值如果是“B,C,D”的话,现在变成“B,C,D,A,”
更改操作:
如果T1中的某一记录的F2变成了“0”,那么F3中找到对应的值也去掉这个值上例中去掉“A,”(不必担心出现重复)
删除操作
如果T1中某一记录删除,那么F3也是要去掉那条对应的值

请各位高手一定帮我!
...全文
32 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
setfocus 2003-11-17
  • 打赏
  • 举报
回复
感谢各位的帮助!
txlicenhe 2003-11-14
  • 打赏
  • 举报
回复
dbo.tabMain 呢?

应该换成 t1
setfocus 2003-11-14
  • 打赏
  • 举报
回复
dbo.tabMain 呢? 不好意思!好的麻烦!我调试一下!通过后,立刻结贴
pengdali 2003-11-14
  • 打赏
  • 举报
回复
tem 是表别名
伍子V5 2003-11-14
  • 打赏
  • 举报
回复
inserted 的别名
伍子V5 2003-11-14
  • 打赏
  • 举报
回复
create trigger tr_name_i on T1
for insert
as
if exists(select 1 from inserted where F2=1)
update T2 set F3=F3+','+a.F1 from inserted a where . . .
go

create trigger tr_name_u on T1
for update
as
if exists(select 1 from inserted where F2=0)
update T2 set F3=left(F3,len(F3)-len(a.F1)-1) from inserted a where . . .
go

create trigger tr_name_d on T1
for delete
as
update T2 set F3='' from deleted a where . . .
go
setfocus 2003-11-14
  • 打赏
  • 举报
回复
请问pengdali(大力 V3.0):tem在这里代表什么意思?
pengdali 2003-11-14
  • 打赏
  • 举报
回复
CREATE TRIGGER 名1 ON t1
FOR INSERT
AS
update t2 set f3=f3+','+tem.f1 from inserted tem where tem.f2=1
go

CREATE TRIGGER 名2 ON t1
FOR update
AS
update t2 set t3=replace(t3,','+tem.f1,'') from inserted tem where tem.f2=0
go

CREATE TRIGGER 名3 ON dbo.tabMain
FOR delete
AS
update t2 set t3=replace(t3,','+tem.f1,'') from deleted tem
txlicenhe 2003-11-14
  • 打赏
  • 举报
回复
我来抛砖吧
create trigger tg1 on t1
for insert,update,delete
as
if not exists(select * from inserted) --删除
begin
update t2 set f3 = ...
end
else
if not exists(select * from deleted) -- 新增
begin
update t2 set f3 = ...
end
else -- 修改
begin
update t2 set f3 = ...
end

34,576

社区成员

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

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