防止日期重叠postgresql
Prevent date overlap postgresql
有没有办法向 postgresql table 添加约束以防止日期重叠?例如,我有一个名为 workouts
的 table,它具有日期列 week_start
、week_end
。我想确保 week_start - week_end 范围中的 none 与任何现有范围重叠。但是,week_start
的结束日期可以与 week_end
的开始日期重叠。
有人可以帮忙吗?
提前致谢!
您可以使用 exclusion constraint, using the overlap operator (&&
) for the daterange
type:
CREATE TABLE workouts (
week_start DATE,
week_end DATE,
EXCLUDE USING gist (daterange(week_start, week_end) WITH &&)
)
您可以将 EXCLUDE
table 约束添加到 table 定义中,然后使用范围来检测重叠。如果您可以更改 table 定义以将列 week_start
和 week_end
变成一个范围,这将非常有用,比如 weeks
.
CREATE TABLE workouts (
...
weeks intrange
EXCLUDE USING gist (weeks WITH &&)
);
有没有办法向 postgresql table 添加约束以防止日期重叠?例如,我有一个名为 workouts
的 table,它具有日期列 week_start
、week_end
。我想确保 week_start - week_end 范围中的 none 与任何现有范围重叠。但是,week_start
的结束日期可以与 week_end
的开始日期重叠。
有人可以帮忙吗?
提前致谢!
您可以使用 exclusion constraint, using the overlap operator (&&
) for the daterange
type:
CREATE TABLE workouts (
week_start DATE,
week_end DATE,
EXCLUDE USING gist (daterange(week_start, week_end) WITH &&)
)
您可以将 EXCLUDE
table 约束添加到 table 定义中,然后使用范围来检测重叠。如果您可以更改 table 定义以将列 week_start
和 week_end
变成一个范围,这将非常有用,比如 weeks
.
CREATE TABLE workouts (
...
weeks intrange
EXCLUDE USING gist (weeks WITH &&)
);