我创建了一个时间字段如下:
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
有谁知道如何解决这个问题?
答案 0 :(得分:2)
您正在向date
投射timestamp with timezone
并且该函数不是不可变的,而是相当稳定的。就是这样,因为它不会总是为传递的相同参数给出相同的结果。
我在这里看到两个选项:
1)更改约束以使用daterange(或没有时区的时间戳):
EXCLUDE USING gist (campaign WITH =, daterange(start_date, end_date) WITH &&)
2)将表格中的那些字段的类型更改为timestamptz