A trigger function like this:
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;
And a trigger (BEFORE
, not 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()