2011-04-07 41 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

你在你的存储过程拼写为“几何体”不正确地触发方法。确保它在您的表格和存储过程中拼写一致。