我有三张表xsyjupdate、nyxscpdl、A2008XSYJ 其中xsyjupdate(年,月)和nyxscpdl(tjdh,ryxm,cpmc,zj)还有A2008XSYJ(tjdh,ryxm,cpmc,zj01,zj02,zj03……zj12)触发器建在xsyjupdate(年,月)上,当它月份改变的时候,把nyxscpdl(tjdh,ryxm,cpmc,zj)添加到A2008XSYJ相应的ZJ月份中。帮我看看怎么写,xsyjupdate中月份是什么,nyxscpdl中的ZJ就添加到A2008XSYJ相应的ZJ月份。
CREATE trigger ADD on xsyjupdate for update
as
begin
if (COLUMNS_UPDATED() & 2) = 2
begin
insert into A2008XSYJ (tjdh,ryxm,cpmc) select tjdh,ryxm,cpmc from nyxscpdl
end
end
CREATE trigger ADD on xsyjupdate for update
as
begin
if (COLUMNS_UPDATED() & 2) = 2
begin
insert into A2008XSYJ (tjdh,ryxm,cpmc) select tjdh,ryxm,cpmc from nyxscpdl
end
end
改為:
if update(月)
begin
...
end
CREATE trigger ADD on xsyjupdate for update
as
begin
if if update(月)
begin
declare @m int
set @m=0
select @m=cast(月 as int) from inserted --此處單獨插入一筆時有效,多筆時須另外寫
if @m=1
insert into A2008XSYJ (tjdh,ryxm,cpmc,zj01) select tjdh,ryxm,cpmc from nyxscpdl,@m
if @m=2
insert into A2008XSYJ (tjdh,ryxm,cpmc,zj02) select tjdh,ryxm,cpmc from nyxscpdl,@m
......
end
end
不太明白,可以解释一下吗
那么用
select @m=cast(月 as int) from inserted
只能取出一個值
CREATE trigger ADD on xsyjupdate for update
as
begin
if if update(月)
begin
declare @m int
set @m=0
select @m=cast(月 as int) from inserted --此處單獨插入一筆時有效,多筆時須另外寫
if @m=1
insert into A2008XSYJ (tjdh,ryxm,cpmc,zj01) select tjdh,ryxm,cpmc,@m from nyxscpdl
if @m=2
insert into A2008XSYJ (tjdh,ryxm,cpmc,zj02) select tjdh,ryxm,cpmc,@m from nyxscpdl
......
end
end