別のテーブルに人が挿入されたことに基づいてテーブルに値を挿入しようとしています。私は誰かが従業員に割り当てられているときに、これをトリガーにして、自動的に利用可能な最初のスポットでeeparkに割り当てられます。私は従業員テーブルに入力されているIDにアクセスする方法を理解できません。私は任意のヒントやアイデアをありがとう、ありがとう!ストアドプロシージャ、ちょうど挿入されたデータにアクセスする
これは私が受け取っているエラーです。
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);
パトリックは今、私はにこの問題を実行しています私のためにこれを考え出した: 私はnullであるこれらの範囲の全てのうち最初の値を選択したい、私も1を取り戻す保ちます範囲をバイパスして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は、別のテーブル..ですinsert文のnew.employeeidがemployee @Patrickに入力されたばかりの値にアクセスしていないためにエラーが発生しました – Zeke
問題はトリガ定義にあります。これは 'FOR EACH ROW'にする必要があります。更新された回答をご覧ください。 – Patrick
私はこれらの範囲で最初の値を返す必要があります。これは600になるnullですが、私は1を取得し続けます..範囲を無視しています...ヒント? @Patrick – Zeke