SQLITE 触发器的多个条件
Multiple condition for SQLITE Triggers
如果在触发器上声明的当前 table 得到更新,我需要更新另一个 table 上的字段。但我只需要在 2 个条件后更新
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 condition" 上。现在我真的不确定如何去检查它。因为我想在一个触发器上更新这两个字段。如果我执行两个触发器,一个用于 "firstPlace" 的设置,另一个用于 "secondPlace",第二个将出现在排名 table 上,我不确定如何获得访问该 "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;
如果在触发器上声明的当前 table 得到更新,我需要更新另一个 table 上的字段。但我只需要在 2 个条件后更新
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 condition" 上。现在我真的不确定如何去检查它。因为我想在一个触发器上更新这两个字段。如果我执行两个触发器,一个用于 "firstPlace" 的设置,另一个用于 "secondPlace",第二个将出现在排名 table 上,我不确定如何获得访问该 "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;