触发器有问题。我有简单的表 stats
.在此表中,我有例如:id
, energy
, is_alive
.我需要创建一个触发器 ON UPDATE
像这样:
CREATE TRIGGER AFTER UPDATE
IF energy <= 0 THEN
UPDATE stats SET is_alive = false
当我执行时:
UPDATE stats SET energy = -3 WHERE id = 7
我愿意:
- 更新值 - 3
- 执行触发器并检查新值是 <= 0
- 如果是,更新 is_alive = false 这条记录 id = 7
这可能吗?或者触发器是否必须检查所有表并更改所有
energy
时的行将是 <= 0
?
最佳答案
像这样的触发函数:
CREATE FUNCTION trg_stats_insup_bef()
RETURNS trigger AS
$func$
BEGIN
IF NEW.energy <= 0 THEN
NEW.is_alive := FALSE;
END IF;
RETURN NEW;
END
$func$ LANGUAGE plpgsql;
还有一个 trigger (之前
,不是 之后
):
CREATE TRIGGER insup_bef
BEFORE INSERT OR UPDATE OF energy ON stats -- covers INSERT, too
FOR EACH ROW
EXECUTE PROCEDURE trg_stats_insup_bef()
关于postgresql - 更新后如何创建触发器来更改记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22852854/