【发布时间】:2017-04-16 16:41:31
【问题描述】:
在我的项目中,我有两个关系:
1. 节日(title、start_date、end_date)
2. 事件(title, event_date)
如果 event_date 设置在相应节日的 start_date 和 end_date 之间,我必须添加一个触发器来检查何时插入新元组\更新到事件关系。
如果事件行无效,则触发器必须发出通知,否则,必须定期插入/更新元组。
我制作的触发器(在 pl/pgSQL 中):
create function trigf() returns trigger as $$
begin
if((NEW.event_date) < (select start_date from festival where festival.title = NEW.title) or
(NEW.event_date) > (select end_date from festival where festival.title = NEW.title)) then
raise notice 'The new event date is invalid';
end if;
return null;
end;
$$language plpgsql;
create trigger T
before insert or update on event
for each row
execute procedure trigf();
问题是我的函数能够检测到无效日期,但它不会插入\更新有效元组。
为了实现这一点,我需要在触发器中进行哪些更改?
【问题讨论】:
标签: sql postgresql triggers plpgsql