2011-04-07 40 views
0

我的目標是在我的表中的行發生更新之前計算並保留某個值。PostgreSQL觸發器和存儲過程不在踢

我創建了觸發器和函數,我沒有得到任何錯誤,但函數似乎沒有被踢入。我哪裏錯了?

過程

CREATE or REPLACE FUNCTION foo() returns trigger as 
    $BODY$ 
    DECLARE 
    BEGIN 
    NEW.geomtry := st_transform(st_pointfromtext('POINT(' || NEW.af_lon || ' ' || NEW.af_lat || ')', 4326), 32643); 
    return NEW; 
    END; 
    $BODY$ 
language plpgsql; 

的觸發更新發生之前

CREATE TRIGGER foo_trigger BEFORE UPDATE ON foo_table FOR EACH ROW EXECUTE PROCEDURE foo(); 
+0

你究竟是什麼意思,「*似乎沒有踢*」。你運行的是什麼聲明,你期望能夠觸發觸發器 – 2011-04-07 10:17:56

+0

通過'kick in',我的意思是,當表中的一行更新從應用程序觸發時,需要在實際值之前計算並持久化更新發生沒有發生。 – Shreyas 2011-04-07 10:31:27

+0

你運行哪個應該觸發觸發器? – 2011-04-07 10:34:53

回答

1

你在你的存儲過程拼寫爲「幾何體」不正確地觸發方法。確保它在您的表格和存儲過程中拼寫一致。