Ok, also habe ich diese Tabellen. Antwort und Frage.Triggerfehler [plpgsql]
Antwort Tabelle hat:
answerID (PK)
Antwort
datePosted
QuestionID
Frage Tisch hat:
QuestionID (PK)
Frage
datePosted
i sicherstellen möchten, dass der Benutzer (E-Mail), die eine Frage beantwortet gehört das Benutzer-Netzwerk des Benutzers (E-Mail), der eine Frage gestellt hat. Mein Benutzernetzwerk kann durch eine andere Tabelle erstellt werden, die hier keine Geschäfte hat. Ich habe eine Funktion, die das Benutzer-Netzwerk eines bestimmten Benutzers findet. So schrieb ich den folgenden Code:
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();
Die Funktion find_user_network findet das Benutzer-Netzwerk eines bestimmten Benutzers. Ich mache diesen Trigger für die Antwort-Tabelle, aber ich habe ein Problem in der IF-Anweisung, weil ich im Eingabeargument der Funktion find_user_network die E-Mail aus der Tabelle Frage stellen möchte. Aber es knallt Fehler, wenn ich versuche, die Daten von den oben genannten Tabellen zu bearbeiten, um zu überprüfen, ob mein Auslöser richtig funktioniert. Der Fehler besagt, dass ich die FROM-Klausel-Eintrag für Tabelle Frage fehlt und es zeigt meine Zeile 3 der Trigger-Funktion, wo die if-Anweisung ist.
Mein Trigger wurde erfolgreich erstellt und meine Triggerfunktion ebenfalls. Aber dieser Fehler bleibt bestehen. Irgendwelche Ideen, was ich falsch mache? Danke!