在PostgreSQL 9.2.3中,我试图创建以下简化表:
CREATE TABLE test (
user_id INTEGER,
startend TSTZRANGE,
EXCLUDE USING gist (user_id WITH =, startend WITH &&)
);但我知道这个错误:
错误:对于access方法"gist“提示,数据类型整型没有默认操作符类:必须为索引指定操作符类,或者为数据类型定义默认运算符类。
不适用于我的PostgreSQL文档使用此示例:
CREATE TABLE room_reservation (
room text,
during tsrange,
EXCLUDE USING gist (room WITH =, during WITH &&)
);同样的错误信息。
而这个,它也不适用于我:
CREATE TABLE zoo (
cage INTEGER,
animal TEXT,
EXCLUDE USING gist (cage WITH =, animal WITH <>)
);同样的错误信息。
我能够在没有任何问题的情况下创造出这样的结果:
CREATE TABLE test (
user_id INTEGER,
startend TSTZRANGE,
EXCLUDE USING gist (startend WITH &&)
);这是:
CREATE TABLE test (
user_id INTEGER,
startend TSTZRANGE,
EXCLUDE USING btree (user_id WITH =)
);我花了相当长的时间来寻找关于如何使这个工作成功的提示,或者找出为什么它不能工作。有什么想法吗?
发布于 2013-03-22 19:32:32
如手册btree_gist中提到的那样,安装附加模块在你链接到的地点:
您可以使用
btree_gist扩展来定义普通标量数据类型上的排除约束,然后可以将这些约束与范围排除结合起来,以获得最大的灵活性。例如,在安装btree_gist之后,只有当会议室号相等时,以下约束才会拒绝重叠范围:
在现代PostgreSQL中,只需运行一次(每个数据库一次):
CREATE EXTENSION btree_gist;您首先需要在您的操作系统中安装“cont肋骨”包。详细信息取决于您的操作系统和所使用的软件库。对于Debian家族来说,它通常是postgresql-contrib-13 (用于Postgres 13)。或者仅仅是红帽家族的postgresql-contrib。以下是与此相关的答案:
https://dba.stackexchange.com/questions/37351
复制相似问题