0
我是postgresql中的新成員。我已經做了一個觸發器,在表中插入後啓用。我的表格有它的值,1個start_date的日期值和1個end_date的日期值。當我在表格中插入新行時,我想檢查是否與任何現有日期重疊。所以我的觸發如下:檢查postgresql中的返回查詢中是否存在值
CREATE OR REPLACE FUNCTION insert_new()
RETURNS TRIGGER AS $$
BEGIN
if ('t' = any (select ((NEW.start_date, NEW.end_date) overlaps (start_date, end_date)) from "mytable")) then
RAISE EXCEPTION 'Invalid insertion!';
else
return NEW;
end if;
END;
$$ LANGUAGE plpgsql;
這似乎是正確的我,但是當我試圖在我的表中插入新行每次都遇到例外。我不明白爲什麼會發生..任何想法?在此先感謝..
下面是創建觸發器代碼:
CREATE TRIGGER check_insert
AFTER INSERT ON "mytable"
FOR EACH ROW
WHEN (NEW.status = 'current')
EXECUTE PROCEDURE insert_new();
我不知道它是否會有所幫助,但這只是一個快速通知。檢查是否會有所幫助:''如果 'T'=任何(選擇((NEW.start_date,NEW.end_date)重疊來自 「MYTABLE」(開始日期,結束日期)))then'' – Sylogista
這架看起來有點可疑,但我真的不知道。 – Sylogista
@Sylogista我嘗試沒有支架,但我得到了相同的結果.. –