有两张表PURTC和PURTD 其中TC001=TD001,TC002=TD002,TCD01是PURTC上的字段
当我更新TCD01='Y'的时候,触发更新TD016='y'
不知道触发器写哪张表好?这样写,不知道错哪里,请大神指教!!!CREATE TRIGGER PURTD20121123 ON [dbo].[PURTC] 
FOR INSERT
AS
DECLARE @TC001 CHAR(4),
        @TC002 CHAR(11),
        @TD001 CHAR(4),
        @TD002 CHAR(11),
        @TCD01 CHAR(1)   
                   
BEGIN TRANSACTION
SET NOCOUNT ON
SELECT @TC001=TC001,@TC002=TC002,@TCD01=TCD01 FROM INSERTED
SELECT @TD001=TD001,@TD001=TD001,@TD002=TD002 FROM PURTD WHERE TD001=@TC001 AND TD002=@TC002 IF UPDATE(TCD01) AND @TCD01='Y'
BEGIN
UPDATE PURTD SET TD016='y' WHERE TD001=@TC001 AND TD002=@TC002 AND TD018='Y' AND TD016='N'
END
SET NOCOUNT OFF
COMMIT TRANSACTION

解决方案 »

  1.   

    写在第一张表上PURTC更新的时候使用upate from语句  不要定义变量更新  那样的话如果更新多行数据就会出现问题
      

  2.   

    能写一下upate from语句  不是很明白你的意思……
      

  3.   

    update tb
    set tb.字段=i.字段 from inserted where i.关联字段=tb.关联字段
      

  4.   

    ALTER TRIGGER PURTD20121123 ON [dbo].[PURTC] 
    FOR INSERT
    AS
    DECLARE @TC001 CHAR(4),
            @TC002 CHAR(11),
            @TD001 CHAR(4),
            @TD002 CHAR(11),
            @TCD01 CHAR(1)   
                       
    BEGIN TRANSACTION
    SET NOCOUNT ON
    SELECT @TC001=TC001,@TC002=TC002,@TCD01=TCD01 FROM INSERTED
    SELECT @TD001=TD001,@TD001=TD001,@TD002=TD002 FROM PURTD WHERE TD001=@TC001 AND TD002=@TC002 IF UPDATE(TCD01) AND @TCD01='Y'
    BEGIN
    UPDATE PURTD SET TD016='y' FROM INSERTED 
    WHERE TD001=TC001 AND TD002=TC002 AND TD018='Y' AND TD016='N'
    END
    SET NOCOUNT OFF
    COMMIT TRANSACTION我这样写还是达不到要求呃,请问哪里有错呢?新手唉我是
      

  5.   

    CREATE TRIGGER PURTD20121123 ON [dbo].[PURTC] 
    FOR UPDATE
    AS                
    BEGIN TRANSACTION
        SET NOCOUNT ON
        UPDATE PURTD SET TD016='y'
    FROM INSERTED i 
    WHERE TD001=i.TC001 AND TD002=i.TC002 AND i.TD018='Y' AND i.TD016='N'
        END
        SET NOCOUNT OFF
    COMMIT TRANSACTION你这个应该是Update触发器