使用2个表的Postgresql触发器

问题描述 投票:-1回答:1

我有3张桌子:

  1. 雇员(eid,ename,薪水,工作,分类)
  2. 项目(pid,pname,执行,预算,截止日期)
  3. Onproject(pid,eid,fromdate)

我尝试编写触发器,以检查是否有新雇员插入Onproject,到期日从起始日起大于一个月,如果没有返回错误消息,并且该记录将不会添加到表中。

我尝试过

CREATE TRIGGER T1
BEFORE INSERT
ON Onproject
FOR EACH ROW
EXECUTE PROCEDURE trigf1();

create or replace function trigf1() returns trigger as
$BODY$ BEGIN
IF (DATE_PART('day', NEW.fdate::date) - DATE_PART('day', duedate::date) > 30)
THEN insert into Onproject values (NEW.pid, NEW.eid, NEW.fdate)
else
rais notice 'adding employee to the project failed, less then one month to due date.'
end if
end
$BODY$
LANGUAGE PLPGSQL VOLATILE

但是触发器不知道Duedate字段和Project表。

如何使用Project和Onproject表创建触发器?

我有3个表:Employee(eid,ename,薪水,工作,分类)Project(pid,pname,did,预算,到期日期)Onproject(pid,eid,fromdate)我尝试编写触发器来检查插入的新...

postgresql plpgsql database-trigger
1个回答
0
投票

您没有从触发器返回任何内容。如果希望INSERT继续进行,只需返回new行,如果希望它失败,则需要引发错误。

© www.soinside.com 2019 - 2024. All rights reserved.