-1
CREATE TABLE game (
idp serial NOT NULL,
start_pl integer NOT NULL,
finis_pl integer NOT NULL,
points integer NOT NULL
);
當我插入或更新列finis_pl
,我想自動完成列點。例如,當在finis_pl
列中插入編號爲1
的列時,我想要在points
列中自動插入值15
。
我做了一個函數使用CASE(因爲我只有16個可能的值插入點),但我不能讓它與觸發器一起工作。
任何想法如何使它工作?
「*無法使其觸發器工作*」不是有效的PostgreSQL錯誤消息。你爲什麼不告訴我們你到目前爲止所嘗試過的? –
是的,觸發是我知道做這種事情的唯一方法。 – 2011-09-13 15:22:29
CREATE OR REPLACE FUNCTION calc() RETURNS trigger AS $ BODY $ DECLARE value game.points%TYPE; BEGIN IF NEW.finish_pl = 1 WHERE game.idp = NEW.idp THEN UPDATE遊戲SET points = 15 WHERE idp = NEW.idp; \t \t END IF; RETURN NEW; END; $ BODY $ LANGUAGE PLPGSQL VOLATILE CREATE TRIGGER tr_calc BEFORE INSERT OR finish_pl OF UPDATE ON遊戲 FOR EACH ROW EXECUTE PROCEDURE計算值(); – alinux