2016-04-29 16 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;" 

しかし、これはエラーをスローします。どうやら、アンドロイドのトリガーには「WHEN条件」しかない可能性があります。今私はそれをチェックする方法について本当によく分からない。 1つのトリガで2つのフィールドのこの更新を行いたいのですが。 "firstPlace"の設定と "secondPlace"の設定の2つのトリガーを行うと、2番目のトリガーはStandingsテーブルに表示され、その "secondPlace"値へのアクセス方法はわかりません。構文(triggerupdate)エラーを修正した後

答えて

0

は、トリガが受け入れられている:働い

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