私のプロジェクトでは、私は2人の関係があります。
1.祭り(タイトル、START_DATE、END_DATE)
2.イベント(タイトル、EVENT_DATE )
PL/pgSQLのトリガ挿入アップデートのみ有効タプル
私は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();
問題は、私の機能が無効な日付を検出することが可能であるということですが、それは、\更新有効なタプルを挿入しません。
これを達成するために、私のトリガーで何を変更する必要がありますか?
ありがとうございました!しかし、1つの質問:私が 'raise notice'の代わりに 'raise notice'を使用し、無効な行があると、行挿入の試みはすべてキャンセルされますが、無効な行の挿入を取り消したいだけです。だから私はそれを「育てる」ことでどうすることができますか? –
エラーを無視してはいけません。ごめんなさい。しかし、あなたが本当に必要なのであれば、単にraiseを取り除いて 'if ... then NULLを返します。それ以外の場合はNEWを返します。終了if; – Tometzky