2012-01-11 168 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