触发器有问题。我有简单的表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
我想:
这可能吗?或者触发器是否必须检查所有表并更改所有表
energy
为<= 0
时的行?
答案 0 :(得分:3)
这样的触发函数:
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(BEFORE
,不 AFTER
):
CREATE TRIGGER insup_bef
BEFORE INSERT OR UPDATE OF energy ON stats -- covers INSERT, too
FOR EACH ROW
EXECUTE PROCEDURE trg_stats_insup_bef()