比如:A表有a b c三个字段,如果a字段更新,我就修改b字段的值
可是你用这样:UPDATE XXX WHREE ID IN(SELECT ID FROM XXX)的语句来更新表楼上你可以没遇到,你可以按我说的,自己去模拟一个程序就知道了!

解决方案 »

  1.   

    发个测试例子看看吧
    CREATE TABLE TAB_1
    (
       ID INT IDENTITY(1,1),
       A VARCHAR(20),
       B VARCHAR(20)
    )
    INSERT TAB_1 SELECT 'aa',NULL
    UNION ALL SELECT 'bb',NULL
    UNION ALL SELECT 'cc',NULL
    UNION ALL SELECT 'dd',NULL
    GO
    CREATE TABLE TAB_2
    ( ID INT)INSERT TAB_2 SELECT 1
    UNION ALL SELECT 3
    UNION ALL SELECT 4
    GO
    SELECT * FROM TAB_1
    SELECT * FROM TAB_2CREATE TRIGGER TR_TAB_1 ON TAB_1
    FOR UPDATE
    AS
    IF UPDATE(A)
    BEGIN
             DECLARE @ID INT
             SELECT @ID=ID FROM INSERTED
             UPDATE TAB_1 SET B='heihei' WHERE ID=@ID
    ENDUPDATE TAB_1 SET A='1' WHERE ID IN(SELECT ID FROM TAB_2)
    GO结果只有ID为“4”的被更新了!也许我的水品不高,但这样的情况怎么解决
      

  2.   

    我是要1,3,4也就是符合TAB2表的3条记录都会更新!
      

  3.   

    你這當然是錯的啦,看下面的觸發器:alter  TRIGGER TR_TAB_1 ON TAB_1
    FOR UPDATE
    AS
    IF UPDATE(A)
    BEGIN
     update TAB_1 set B = 'heihei' 
     from TAB_1 A inner join inserted B on A.ID = B.Id 
                inner join deleted C on A.Id = C.Id
    where B.A <> C.A 
    END