SQLite 创建 AFTER UPDATE 触发器

Posted

技术标签:

【中文标题】SQLite 创建 AFTER UPDATE 触发器【英文标题】:SQLite creating an AFTER UPDATE Trigger 【发布时间】:2017-12-09 18:24:51 【问题描述】:

我正在尝试创建一个 SQLite 触发器,它会在玩家每次达到 10 点时自动将字段 FlagPayment 设置为 1,但是,显然我有语法错误。

CREATE TRIGGER aft_update AFTER UPDATE ON Player
FOR EACH ROW WHEN (NEW.ParticipationPoints % 10 = 0) and (NEW.ParticipationPoints > 0)
BEGIN
    UPDATE Player SET FlagPayment = 1 WHERE ID = NEW.ID
END;

这是结果:

“END”附近:语法错误:CREATE TRIGGER aft_update AFTER UPDATE ON 每一行的玩家(NEW.ParticipationPoints % 10 = 0)和 (NEW.ParticipationPoints > 0) BEGIN UPDATE Player SET FlagPayment = 1 WHERE ID = NEW.ID END

【问题讨论】:

【参考方案1】:

如documentation所示,触发器主体中的所有语句都必须以分号结束:

BEGIN
    UPDATE Player SET FlagPayment = 1 WHERE ID = NEW.ID;
END;                                                   ^

【讨论】:

以上是关于SQLite 创建 AFTER UPDATE 触发器的主要内容,如果未能解决你的问题,请参考以下文章

我想创建 AFTER UPDATE 触发器来更新 DATE OF BIRTH where (AGE < 20)

AFTER UPDATE 触发器上的变异表错误

条件AFTER UPDATE触发器

Orcale触发器的after/before

mysql 触发器的使用(备忘)

触发器before和after有啥区别?