2016-04-29 105 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