好吧,我有這些表。答案和問題。觸發錯誤[plpgsql]
回答表有:
answerID(PK)
答案
datePosted
questionID
電子郵件
問表有:
questionID(PK)
問題
datePosted
電子郵件
我想確保,回答一個問題的用戶(電子郵件)屬於用戶(電子郵件)的用戶網絡做了一個問題。我的用戶網絡可以通過另一個在這裏沒有業務的表創建。我有一個功能可以找到特定用戶的用戶網絡。所以我寫了下面的代碼:
CREATE OR REPLACE FUNCTION "Social_Network".answers_only_by_users_in_user_network()
RETURNS TRIGGER AS
$$
begin
IF new.email NOT IN (select network_email from "Social_Network".find_user_network(question.email)) then
RAISE EXCEPTION 'user that answered does not belong in user network';
return null;
else
return new;
end if;
end;
$$
LANGUAGE plpgsql VOLATILE
CREATE TRIGGER answer_restriction BEFORE INSERT OR UPDATE ON "Social_Network".answer
for each row execute procedure "Social_Network".answers_only_by_users_in_user_network();
函數find_user_network找到特定用戶的用戶網絡。 我使這個觸發器的答案表,但我有一個IF語句的問題,因爲在函數find_user_network的輸入參數我想從表問題的電子郵件。但它彈出錯誤,當我試圖編輯上述表中的數據來檢查我的觸發器是否正常工作。 錯誤說我缺少表問題的FROM子句條目,並且它指出了if語句所在的觸發器函數的第3行。
我的觸發器已成功創建,我的觸發器功能也是如此。但是那個錯誤依然存在。任何想法,我做錯了什麼? 謝謝!