2016-04-29 106 views
0

如果触发器上声明的当前表得到更新,我需要更新不同表上的字段。但我只需要在2个条件后更新SQLITE触发器的多个条件

public class Match{ 
     public int participant1; 
     public int participant2; 
     public int winner; 
     public boolean finalMatch; 
     public int standingId; 
    } 

     public class Standings{ 
      public int id; 
      public int firstPlace; 
      public int SecondPlace; 
     } 

private static final String CREATE_TRIGGER_MATCH_UPDATE_BRACKET_WINNERS_F1 = "CREATE TRIGGER if not exists updatefields 
     AFTER UPDATE OF winner 
      ON Match 
      WHEN new.finalMatch = 1 AND new.winner = new.participant1 
      BEGIN 
      UPDATE Standings 
       SET firstPlace = new.winner 
        SecondPlace = new.participant2 
      WHERE id = new.standingId 
     END;" 

但是,这会引发错误。显然,只能在Android上触发器的“WHEN条件”。现在我不确定如何去检查它。因为我想在一个触发器上更新这两个字段。如果我做了两个触发器,其中1个用于设置“firstPlace”,另一个用于“secondPlace”,第二个触发器将在Standings表中,我不确定如何访问该“secondPlace”值。

回答

0

固定的语法(triggerupdate)错误后,触发器被接受:

CREATE TRIGGER if not exists updatefields 
AFTER UPDATE OF winner ON Match 
WHEN new.finalMatch = 1 AND new.winner = new.participant1 
BEGIN 
    UPDATE Standings 
    SET firstPlace = new.winner,   -- comma here 
     SecondPlace = new.participant2 
    WHERE id = new.standingId;    -- semicolon here 
END; 
+0

奏效,我错过了分号! – gdubs