Ich versuche, Werte in eine Tabelle einzufügen, die auf einer Person basiert, die in eine andere Tabelle eingefügt wird. Ich habe einen Auslöser dafür, wenn jemand einem Mitarbeiter zugewiesen wird, werden sie automatisch mit employeepark mit der ersten Stelle, die verfügbar ist, zugewiesen. Ich kann nicht herausfinden, wie man auf die ID zugreift, die in die employee-Tabelle eingegeben wird. Ich würde mich über irgendwelche Tipps oder Ideen freuen, danke!gespeicherte Prozedur, Zugriff auf gerade eingefügte Daten
Dies ist der Fehler, den ich erhalte.
ERROR: record "new" is not assigned yet
create or replace function new_employeeAssign() returns trigger as $new_employeeAssign$ declare open_spotID int := (select parkingspot.spotid from employeepark e full outer join parkingspot on e.spotid = parkingspot.spotid where e.spotid isNull limit 1); begin insert into employeepark(employeeid, spotid) values(new.employeeid ,open_spotID); End; $new_employeeAssign$ language plpgsql; create trigger new_employeeAssign after insert on employee execute procedure new_employeeAssign(); insert into people(peopleid, fname, lname) values(686, 'random', 'person'); insert into employee(employeeid) values(686);
Patrick dachte das jetzt für mich heraus, dass ich in leite dieses Problem: ich den ersten Wert aus allen dieser Bereiche auswählen möchten, die null ist, ich bekomme immer wieder ein, obwohl und es ist nur umgangen die Bereiche und direkt zum isNull.
(select parkingspot.spotid from employeepark e full outer join parkingspot on e.spotid = parkingspot.spotid where (e.spotid = 301) or (e.spotid = 1601) or (e.spotid = 2001) or (e.spotid = 2011) or (e.spotid = 2121) or (e.spotid = 2021) or (e.spotid = 2771) or (e.spotid = 2921) or (e.spotid = 3021) or (e.spotid = 3823) isNull limit 1)
parkingspot eine andere Tabelle, wenn ich laufe, dass Auswahlabfrage ich die nächste verfügbare Parklücke zu bekommen (ich es einfach versucht) .. Ich bekomme einen Fehler, weil die new.employeeid in der Insert-Anweisung nicht auf den Wert, der gerade in Mitarbeiter @Patrick – Zeke
eingegeben wurde Problem ist in Trigger-Definition, die für jede Zeile sein sollte. Siehe aktualisierte Antwort. – Patrick
Ich muss den ersten Wert in diesen Bereichen, die Null ist, die 600 wäre, zurückgeben, aber ich bekomme immer einen .. ignoriert die Bereiche ... irgendwelche Tipps? @Patrick – Zeke