我的是ERP软件,我在主资料库上加上如下触发器
create trigger trgr_restorebase on restorebase
for update
as
declare
@prodnr varchar(30),
@descript1 varchar(30)
if update(descript1)
select @descript1=descript1 from inserted
update bomchangeproduct set descript1=@descript1 where bomchangeproduct.masternr=@prodnr
if update(descript1)
select @descript1=descript1 from inserted
update bomproduct set descript1=@descript1 where bomproduct.masternr=@prodnr
begin
rollback transaction
end
在软件页面上点修改就出现如下图示错误,还请大家帮忙分析一下

解决方案 »

  1.   


    if update(descript1)
    select @descript1=descript1 from inserted
    update bomchangeproduct set descript1=@descript1 where bomchangeproduct.masternr=@prodnr
    if update(descript1)
    select @descript1=descript1 from inserted
    update bomproduct set descript1=@descript1 where bomproduct.masternr=@prodnr
    begin
    rollback transaction --回滚事务?为何
    ---可换成如下:if update(descript1)
    select @descript1=descript1 from inserted
    BEGIN TRAN 
    --更新1,还需注意列字段是否没写错
    update bomchangeproduct set descript1=@descript1 
    where bomchangeproduct.masternr=@prodnr
    --更新2
    update bomproduct set descript1=@descript1 
    where bomproduct.masternr=@prodnr
    COMMIT TRAN 
    begin
      

  2.   

    楼上写错,应该如下试试:
    我的是ERP软件,我在主资料库上加上如下触发器
    create trigger trgr_restorebase on restorebase
    for update
    as
    declare
    @prodnr varchar(30),
    @descript1 varchar(30)
    if update(descript1)
    begin
    select @descript1=descript1 from inserted
    BEGIN TRAN 
    --更新1,还需注意列字段是否没写错
    update bomchangeproduct set descript1=@descript1 
    where bomchangeproduct.masternr=@prodnr
    --更新2
    update bomproduct set descript1=@descript1 
    where bomproduct.masternr=@prodnr
    COMMIT TRAN
    end 
    else
    rollback 
      

  3.   

    因为@prodnr varchar(30)你没有赋值。
      

  4.   


    create trigger trgr_restorebase on restorebase
    for update
    as
    declare
    @prodnr varchar(30),
    @descript1 varchar(30)
    if update(descript1)
    begin
    --赋值
    SET @prodnr='你的值来源'
    select @descript1=descript1 from inserted
    BEGIN TRAN 
    --更新1,还需注意列字段是否没写错
    update bomchangeproduct set descript1=@descript1 
    where bomchangeproduct.masternr=@prodnr
    --更新2
    update bomproduct set descript1=@descript1 
    where bomproduct.masternr=@prodnr
    COMMIT TRAN
    end 
    else
    rollback 
      

  5.   

    你说的
    --赋值
    SET @prodnr='你的值来源'
    varchar(30),
    不明白! 这里面这个数值30也是我没有弄明白的原因,我是按照书上的样式写的,那个也没找到资料!还请帮忙解释一下,谢谢!
      

  6.   

    CREATE trigger trgr_restorebase on dbo.Restorebase
    for update
    as
    declare
    @prodnr varchar(30),
    @descript1 varchar(30)
    declare @restorebase int
    SET @prodnr=(select  count(*)  from restorebase)
    select @restorebase
    if update(descript1)
    begin
    select @descript1=descript1 from inserted
    BEGIN TRAN 
    update bomchangeproduct set descript1=@descript1 
    where bomchangeproduct.masternr=@prodnr
    update bomproduct set descript1=@descript1 
    where bomproduct.masternr=@prodnr
    COMMIT TRAN
    end 
    else
    rollback 这样写了不会出错,但是不会更新
      

  7.   

    SSMS上手动执行以下代码是否有更新?update bomchangeproduct set descript1=@descript1  
    where bomchangeproduct.masternr=@prodnr
    update bomproduct set descript1=@descript1  
    where bomproduct.masternr=@prodnr