SET @MainID=(select 主运单号 from [dbo].[SubSheetInfo]

解决方案 »

  1.   

    好像没理解你想做什么
    SET @MainID=[dbo].[SubSheetInfo].[主运单号] 你是想做什么?有没有考虑同时更新了很多记录?
      

  2.   

    楼主出错地方的语句好象是不能执行呢!你想[dbo].[SubSheetInfo].[主运单号] 代表了什么呢?还是先试试 liujianjun_(流星尔)的方法吧!
      

  3.   

    我只想得到当前被更新的那一条纪录的主运单号字段值,liujianjun_(流星尔)的方法恐怕会得到很多项吧。
      

  4.   

    我想做得十分简单,主表MainSheetInfo和从表SubSheetInfo是一对多的关系,两者以字段[主运单号]为联系。当从表SubSheetInfo中的[状态]字段的值改变时,如果所有具有相同[主运单号]字段值如'AAAAAAAAAAA'的纪录的[状态]字段都变成了'已结',那么,主表MainSheetInfo中[主运单号]字段值为'AAAAAAAAAAA'的纪录的[状态]字段也要由'未结'变成'已结'。
      

  5.   

    CREATE TRIGGER StateChanged ON [dbo].[SubSheetInfo] 
    FOR  UPDATE 
    AS
    BEGIN
    IF UPDATE(状态)
        UPDATE  [dbo].[MainSheetInfo]
        SET 状态 = '已结' 
        WHERE  NOT EXISTS (SELECT * FROM [dbo].[SubSheetInfo] WHERE [dbo].[SubSheetInfo].[主运单号]= [dbo].[MainSheetInfo].[主运单号]   AND [dbo].[SubSheetInfo] .[状态] <> '已结' 
    END
        )
      

  6.   

    CREATE TRIGGER StateChanged ON [dbo].[SubSheetInfo] 
    FOR  UPDATE 
    AS
    BEGIN
    IF UPDATE(状态)
        UPDATE  [dbo].[MainSheetInfo]
        SET 状态 = '已结' 
        WHERE  NOT EXISTS (SELECT * FROM [dbo].[SubSheetInfo] WHERE [dbo].[SubSheetInfo].[主运单号]= [dbo].[MainSheetInfo].[主运单号]   AND [dbo].[SubSheetInfo] .[状态] <> '已结' )
    END
      

  7.   

    SET @MainID=(select 主运单号 from inserted)
    不好意思,写错了。
      

  8.   

    但实际上楼主这样,只能在更新一条时是正确的。如果UPDATE多条记录时,会出错。因为触发器只会触发一次。所以应该改成
    CREATE TRIGGER StateChanged ON [dbo].[SubSheetInfo] 
    FOR  UPDATE 
    AS
    IF UPDATE(状态)
         UPDATE  [dbo].[MainSheetInfo]
        SET 状态 = '已结'
        WHERE  [dbo].[MainSheetInfo].[主运单号] in (select 主运单号 from inserted)
        AND '已结'= ALL  (SELECT 状态 FROM [dbo].[SubSheetInfo] WHERE [dbo].[SubSheetInfo].[主运单号] in (select 主运单号 from inserted))