【发布时间】:2015-07-28 06:56:27
【问题描述】:
目前我正在使用重叠运算符,以便用户无法插入重叠的日期。我创建了这个函数:
CREATE OR REPLACE FUNCTION overlap(docent_medewerkerscode1 CHARACTER(7),
lokaal1 TEXT, groep_groepsnaam1 TEXT, startdatum1 timestamp, einddatum1
timestamp)
RETURNS TEXT AS $$
DECLARE
resultaat TEXT;
rec rooster%rowtype;
BEGIN
FOR rec IN SELECT groep_groepsnaam = groep_groepsnaam1 OR lokaal =
lokaal1 OR docent_medewerkerscode = docent_medewerkerscode1 FROM rooster
LOOP
IF(startdatum1, einddatum1) OVERLAPS (startdatum, einddatum) FROM
rooster THEN
--IF startdatum1 BETWEEN startdatum AND einddatum AND einddatum1 BETWEEN startdatum AND einddatum FROM rooster THEN
resultaat = 'tijd overlapt';
RAISE 'Niet mogelijk tijd komt overeen met ingeplande tijd';
END IF;
END LOOP;
RETURN resultaat;
END;
$$ LANGUAGE plpgsql;
问题是重叠不适用于多行。
(错误:查询“SELECT (startdatum1, einddatum1) OVERLAPS (startdatum, einddatum) FROM rooster”返回多行)
我正在寻找一种方法,让我们对选择查询中的每一行进行重叠检查。你们有谁知道我能做什么?
【问题讨论】:
-
一如既往地,请提供您的 Postgres 版本。在问题中。
标签: postgresql database-design plpgsql overlap