2014-04-04 104 views
1

我有觸發問題。我有簡單的表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 

我想:

  1. 更新值上 - 3
  2. 執行觸發器和檢查新值是< = 0
  3. 如果是更新is_al ive = false此記錄上id = 7

這可能嗎?或者觸發器是否必須檢查所有表格,並在energy將是<= 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; 

而一個triggerBEFOREAFTER):

CREATE TRIGGER insup_bef 
BEFORE INSERT OR UPDATE OF energy ON stats -- covers INSERT, too 
FOR EACH ROW 
EXECUTE PROCEDURE trg_stats_insup_bef() 
+0

它是完美的,非常感謝你 – Logan

相關問題