创建具有日期/时间范围约束的表以防止重叠

时间:2016-04-16 21:09:40

标签: sql postgresql time range unique

我正在尝试在PostgreSQL中创建一个表,阻止用户输入在之前插入的操作中花费时间的操作。

我的目标是创建医院模式,并阻止用户添加在之前添加的操作中花费时间的操作,这种操作发生在同一个房间(没有重叠)。

让我们说,首先,我在房间'a1'中添加了一个操作,需要时间在11月15日15:45到16:45之间,然后我希望数据库阻止我在房间'a1中添加操作“这需要时间在11月15日16:00到17:00之间。

像(不工作)的东西:

CONSTRAINT operation_un UNIQUE(room, ???datetime???)

1 个答案:

答案 0 :(得分:3)

您要谷歌的短语是" postgresql排除约束"。

有一个例子正是你想要的。

http://www.postgresql.org/docs/current/static/rangetypes.html#RANGETYPES-CONSTRAINT