2012-01-11 53 views
1

我正在试验postgreSQL中的触发器,但是由于某种原因我想做两次触发器插入操作(这是使用FOR EACH ROW),当我将其更改为FOR每个陈述它执行插入3次。这是我的SQL脚本PostgreSQL触发函数执行多次

CREATE OR REPLACE FUNCTION forest_aud_func() returns trigger as $tree_stamp$ 
BEGIN 
    insert into Audit values('k',124,'l'); 
    return null; 
END; 
$tree_stamp$ 
LANGUAGE plpgsql; 

create trigger forest_aud_ins after insert on forest 
for each row execute procedure forest_aud_func() 

insert into forest values('Blue',1600,'Austria','Health Ltd') 

任何想法为什么会发生这种情况? 感谢

+1

你应该**不**从你的触发器返回null。这将停止处理插入! – 2012-01-11 12:27:00

+0

它仍然为我插入返回null,我不认为它的问题,或者你的意思是别的吗? – Karl 2012-01-11 12:38:01

+0

这很奇怪,因为手册明确指出,如果触发器返回null,插入(在你的情况下插入到'forest'中)将被中止。 – 2012-01-11 13:09:53

回答

1

我发现了这个问题,我总是创造新的触发器,但不删除以前的,所以每次我做一个插入它发射所有我做过的触发器, 抱歉,并感谢您的帮助

+0

感谢您提供反馈。 – 2012-01-11 13:10:11