我试图根据一个人插入到另一个表中插入值到表中。我有一个触发器,当有人被分配到员工时,他们被自动分配到employeepark,并有第一个可用的位置。我无法弄清楚如何访问输入到employee表中的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);
帕特里克想通了这一点对我来说,现在我遇到了这个问题: 我要选择的第一个值的所有这些范围是空的,我把虽然找回一个它只是绕过范围并直接进入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是另一个表,当我运行选择查询,我得到下一个可用的停车位(我只是尝试了)..即时通讯错误,因为插入语句中的new.employeeid没有访问刚刚输入到员工中的值@Patrick – Zeke
问题在触发器定义中应该是'FOR EACH ROW'。查看更新的答案。 – Patrick
我需要返回这些范围内的第一个值,这将是600,但我不断收到一个..它忽略范围...任何提示? @Patrick – Zeke