PostgreSQL 基于范围数字字段的唯一索引

发布于 2024-10-21 02:52:57 字数 422 浏览 1 评论 0原文

我有一个 scheduleitem 表,其中包含 roomdayofweekstarttimeendtime 列。我希望能够在 roomdayofweek 创建唯一索引,其中谓词(以某种方式)防止表包含重叠时间,即防止重叠潜在的新行 r2 和任何给定的现有行 r1 满足

r2.endtime > r1.starttime and r1.endtime > r2.starttime

到目前为止,我无法将子查询添加到部分索引谓词,以及我在唯一列的列表必须是不可变的(不能运行任何查询),所以我很困惑。

I have a scheduleitem table with columns for room, dayofweek, starttime and endtime. I'd like to be able to create a unique index on room and dayofweek where the predicate (somehow) prevents the table from containing overlapping times, that is, prevent overlap where a potential new row r2 and any given existing row r1 satisfy

r2.endtime > r1.starttime and r1.endtime > r2.starttime

So far I can't add a subquery to the partial index predicate, and any stored procedure that I reference in the list of unique columns has to be immutable (can't run any queries), so I'm stumped.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

〃温暖了心ぐ 2024-10-28 02:52:57

您正在寻找功能排除约束 - 请参阅 http://www.postgresql .org/docs/9.0/static/sql-createtable.html 并查看有关 EXCLUDE 的部分。

You are looking for the feature EXCLUSION CONSTRAINTS - see http://www.postgresql.org/docs/9.0/static/sql-createtable.html and look at the part about EXCLUDE.

奶气 2024-10-28 02:52:57

为什么不直接使用触发器呢?您可以在此处阅读有关它们的信息。

Why not just use a trigger? You can read about them here.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文