a上的
SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS ON 
GO--创建触发器删除主单的时候删除详单
ALTER  trigger tr_masterstorage_delete
on dbo.masterstorage
for DELETE 
as 
declare @csn varchar(10) --单据号码
select @csn=d.cstorageno
from deleted D
delete detailstorage where cstorageno=@csnGO
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

解决方案 »

  1.   

    b上的
    SET QUOTED_IDENTIFIER ON 
    GO
    SET ANSI_NULLS ON 
    GO
    -- =============================================
    -- ALTER  trigger basic template(After trigger)
    -- =============================================
    ALTER    TRIGGER tr_detailscgdelete
    ON detailstorage
    FOR delete 
    AS 
    BEGIN
    declare @goodsno varchar(15)
    declare @bargainno varchar(15)
    declare @izl decimal(12,4)
    declare @isl decimal(10,2)
    declare @cizl decimal(12,4)
    declare @cisl decimal(10,2)
    declare @pc varchar(25)
    declare @djbh varchar(10)
    if exists(select cpc from deleted)
    begin
    select @djbh=cstorageno,@pc=cpc,@izl=iweight,@isl=istorageamount,@goodsno=cgoodsno,@bargainno=cbargainno from deleted
    if (select right(cstoragemethod,2) from masterstorage where cstorageno=@djbh)='入库'--减少库存
    begin
    select @cizl=izl,@cisl=isl from currentgoods where cbargainno=@bargainno and cgoodsno=@goodsno 
    update currentgoods set isl=@cisl-@isl,izl=@cizl-@izl where cbargainno=@bargainno and cgoodsno=@goodsno
    end
    if (select right(cstoragemethod,2) from masterstorage where cstorageno=@djbh)='出库'--增加库存
    begin
    select @cizl=izl,@cisl=isl from currentgoods where cbargainno=@bargainno and cgoodsno=@goodsno 
    update currentgoods set isl=@cisl+@isl,izl=@cizl+@izl where cbargainno=@bargainno and cgoodsno=@goodsno
    end
    end
    END
    GO
    SET QUOTED_IDENTIFIER OFF 
    GO
    SET ANSI_NULLS ON 
    GO
      

  2.   

    太多了  你先把中间的部分去掉然后一个个往上加,进行调试if exists(select cpc from deleted)
    begin
             ----加语句         end 
      

  3.   

    同意楼上的,修改b上的触发器,直接在里面写上一句:
    select * from deleted然后再在查询分析器中做删除测试,看看删除影响的记录是否正确.
      

  4.   

    请问select * from deleted 有返回结果

    select @djbh=cstorageno from deleted
    为什么就没有结果呢?这种写法有错误吗?
      

  5.   

    写法没有错误可以这样显示
    print @djbh
      

  6.   

    select @djbh=cstorageno from deleted
    这是一个赋值过程,即把cstorageno的值给@djbh