Django postgres约束EXCLUDE WITH GIST

时间:2018-06-18 12:35:29

标签: django postgresql

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

start_date = models.DateField()
end_date = models.DateField()

尝试使用

在表格上创建约束时
 ALTER TABLE analytics
    EXCLUDE USING gist (campaign WITH =, tstzrange(start_date, end_date) WITH &&)

我收到错误

ERROR:  functions in index expression must be marked IMMUTABLE

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

1 个答案:

答案 0 :(得分:2)

您正在向date投射timestamp with timezone并且该函数不是不可变的,而是相当稳定的。就是这样,因为它不会总是为传递的相同参数给出相同的结果。

我在这里看到两个选项:

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

EXCLUDE USING gist (campaign WITH =, daterange(start_date, end_date) WITH &&)

2)将表格中的那些字段的类型更改为timestamptz