多表触发一表
请问我更新一表A中的数据,要触发更新B 表中的数据(包括插入、更新、删除)
更新一表C中的数据,要触发更新B 表中的数据(包括插入、更新、删除)
还有D 表等等
A表
rkdh mc gg zs sl 分别是入库单号 名称 规格 支数 重量
1001 aa 5 5 40
如果 C 表中插入记录的话
rkdh mc gg zs sl 分别是入库单号 名称 规格 支数 重量
3001 aa 6 6 66
另一个表B
部分字段
pzh zs sl lx
1001 5 40 A
3001 6 66 C
要求更新表A的支数或者数量时 表B 触发更新 (同样插入、删除有效)
create trigger UpdateA on A表 for insert,update,delete --创建一个insert、update和delete都会触发的触发器
as
begin
if exists(select 1 from inserted) --判断inserted表中是否有数据,如果有..就是发生了insert或update
begin
if not exists(select 1 from deleted) --如果inserted里有数据,但deleted里没有数据,则是insert
insert 表B select rkdh,zs,sl from inserted ----这里这么加一个固定值 如果是表A则插入的 LX字段值为A
else --如果inserted和deleted中都有数据,则是update
update 表B set zs=i.zs,sl=i.sl from inserted as i where 表B.pzh=i.rkdh
end
else --如果inserted里什么也没有,但触发了,则是发生了delete
delete 表B from deleted as d where 表B.pzh=d.rkdh
end
上述红色的部分该如何解决呢?
create trigger UpdateA on A表 for insert,update,delete
as
begin
if exists(select 1 from inserted)
begin
if not exists(select 1 from deleted)
insert 表B select rkdh,zs,sl,'A' from inserted
else
update 表B set zs=i.zs,sl=i.sl from inserted as i where 表B.pzh=i.rkdh and lx='A'
end
else
delete 表B from deleted as d where 表B.pzh=d.rkdh and lx='A'
end
这个执行时 检验语法时 报错 查询中列名或表名 不匹配
请高手指教是 注明解释!!!谢谢!