首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用GIST排除Django postgres约束

用GIST排除Django postgres约束
EN

Stack Overflow用户
提问于 2018-06-18 12:35:28
回答 1查看 398关注 0票数 0

我创建了一个时间字段如下:

代码语言:javascript
复制
start_date = models.DateField()
end_date = models.DateField()

当尝试在表上创建约束时,

代码语言:javascript
复制
 ALTER TABLE analytics
    EXCLUDE USING gist (campaign WITH =, tstzrange(start_date, end_date) WITH &&)

我犯了个错误

代码语言:javascript
复制
ERROR:  functions in index expression must be marked IMMUTABLE

有人知道如何解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-18 13:12:25

您正在将date转换为timestamp with timezone,该函数不是不变的,而是相当稳定的。这是这样的,因为对于通过的相同的论点,它不会总是给出相同的结果。

我在这里看到两种选择:

1)更改约束以使用daterange (或没有时区的时间戳):

代码语言:javascript
复制
EXCLUDE USING gist (campaign WITH =, daterange(start_date, end_date) WITH &&)

2)将表中这些字段的类型更改为时间戳

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50909662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档