Ich kann nicht scheinen, logisch zu platzieren, diesen Fehler im Gegensatz zu den meisten produziert gibt wenig bis keine Informationen, warum (in der Regel scheint ihre sehr gute Pre-Prozessoren oder Sie können in die Logik graben, aber hier bekomme ich keine Fehler. ich habe auch eine andere Funktion gut funktioniert, dass diese Schlüssel fügt hinzu, so dass sie das nicht .. andere dann scheint die Transaktion zu scheitern und ich in der Klemme, wenn ichPostgreSQL Trigger-Funktion Update-Fehler
update guest_list set coatcheck = true where ticket_number = 3;
"PL/pgSQL function coatcheck_gen() line 8 at SQL statement SQL statement "update guest_list set coatcheck_num = coat_num where ticket_number = old.ticket_number" PL/pgSQL function coatcheck_gen() line 8 at SQL statement SQL statement "update guest_list set coatcheck_num = coat_num where ticket_number = old.ticket_number"
diese eingeben geht weiter für seiten, endet dann. habe ich ausprobiert benutzt neu. alt. oder nur nummern zu sehen. und nichts. gleicher Fehler alle Tabellen sind in Ordnung. Alle Aktualisierungen funktionieren, wenn sie nur auf Befehl ausgeführt werden. es erscheint an anderer Stelle in den Beispielen seemly richtig ...
die Funktion
create or replace function coatcheck_gen() returns trigger as $gencoatcheck$
declare
coat_num bigint;
begin
IF (TG_OP = 'UPDATE') then
if (new.coatcheck = true) then
coat_num := (old.frkey_id_event + old.frkey_id_guest);
update guest_list set coatcheck_num = coat_num where ticket_number = old.ticket_number;
return new;
END IF;
return new;
end if;
return new;
end;
$gencoatcheck$ LANGUAGE plpgsql;
Trigger
create trigger trg_coatchek_gen after update on guest_list for each row when (new.coatcheck = true) execute Procedure coatcheck_gen();
Ich habe begreifen nicht ganz ersetzen, was Sie zu achive versuchen. – Ingaz
Sie haben einen 'Trigger nach dem Update für jede Zeile' und innerhalb des Triggers die gleiche Tabelle aktualisiert. Ist es deine wahre Absicht? Wenn es deine Idee war, als was schief gelaufen ist? Sie haben eine Ausnahme in Ihrer Transaktion? Sie haben eine Ausnahme für jede Zeile oder Sie haben keine Ausnahme und es sieht für Sie falsch aus? – Ingaz
yup. Wenn also "Mantelprüfung" auf "Wahr" geändert wird, wird eine Mantelprüfnummer erstellt. und fügt es der Tabelle hinzu. Dies geschieht nur, nachdem eine Person anwesend ist. und auf der Gästeliste. (Funktionen zum Erstellen von Ticketnummern, auf Beiträge von Typ Veranstaltung Arbeit alles gut. Ich habe eine Ausnahme, die versichert, dass eine Person "teilnehmen muss", bevor ein Mantel-Check hinzugefügt wird. also, Trigger tritt auf, wenn und nur wenn "Coatcheck" Ist das passiert, sollte der Trigger auf die Funktion gehen und eine coatcheck_number erstellen .. – Zepalz