SQLITE触发器的多个条件
问题描述:
如果触发器上声明的当前表得到更新,我需要更新不同表上的字段。但我只需要在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”值。
答
固定的语法(trigger,update)错误后,触发器被接受:
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;
奏效,我错过了分号! – gdubs