您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Postgres日期重叠约束

Postgres日期重叠约束

好吧,我最终这样做了:

CREATE TABLE test (
    from_ts TIMESTAMPTZ,
    to_ts TIMESTAMPTZ,
    account_id INTEGER DEFAULT 1,
    product_id INTEGER DEFAULT 1,
    CHECK ( from_ts < to_ts ),
    CONSTRAINT overlapping_times EXCLUDE USING GIST (
        account_id WITH =,
        product_id WITH =,
        period(from_ts, CASE WHEN to_ts IS NULL THEN 'infinity' ELSE to_ts END) WITH &&
    )
);

与无限,交易证明完美配合。

我只需要安装时间扩展,它将在postgres 9.2中是本地的,而btree_gist在9.1中可以作为扩展 CREATE EXTENSION btree_gist;

nb:如果您没有null时间戳,则无需使用时间扩展,可以使用我的问题中指定的@R_631_2419@方法

Postgres 2022/1/1 18:42:29 有330人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶