首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PostgreSQL排除使用错误:数据类型整数没有默认操作符类

PostgreSQL排除使用错误:数据类型整数没有默认操作符类
EN

Database Administration用户
提问于 2013-03-22 15:56:18
回答 1查看 35.3K关注 0票数 59

在PostgreSQL 9.2.3中,我试图创建以下简化表:

代码语言:javascript
复制
CREATE TABLE test (
    user_id INTEGER,
    startend TSTZRANGE,
    EXCLUDE USING gist (user_id WITH =, startend WITH &&)
);

但我知道这个错误:

错误:对于access方法"gist“提示,数据类型整型没有默认操作符类:必须为索引指定操作符类,或者为数据类型定义默认运算符类。

不适用于我的PostgreSQL文档使用此示例

代码语言:javascript
复制
CREATE TABLE room_reservation (
    room text,
    during tsrange,
    EXCLUDE USING gist (room WITH =, during WITH &&)
);

同样的错误信息。

而这个,它也不适用于我:

代码语言:javascript
复制
CREATE TABLE zoo (
    cage   INTEGER,
    animal TEXT,
    EXCLUDE USING gist (cage WITH =, animal WITH <>)
);

同样的错误信息。

我能够在没有任何问题的情况下创造出这样的结果:

代码语言:javascript
复制
CREATE TABLE test (
    user_id INTEGER,
    startend TSTZRANGE,
    EXCLUDE USING gist (startend WITH &&)
);

这是:

代码语言:javascript
复制
CREATE TABLE test (
    user_id INTEGER,
    startend TSTZRANGE,
    EXCLUDE USING btree (user_id WITH =)
);

我花了相当长的时间来寻找关于如何使这个工作成功的提示,或者找出为什么它不能工作。有什么想法吗?

EN

回答 1

Database Administration用户

回答已采纳

发布于 2013-03-22 19:32:32

如手册btree_gist中提到的那样,安装附加模块在你链接到的地点

您可以使用btree_gist扩展来定义普通标量数据类型上的排除约束,然后可以将这些约束与范围排除结合起来,以获得最大的灵活性。例如,在安装btree_gist之后,只有当会议室号相等时,以下约束才会拒绝重叠范围:

在现代PostgreSQL中,只需运行一次(每个数据库一次):

代码语言:javascript
复制
CREATE EXTENSION btree_gist;

您首先需要在您的操作系统中安装“cont肋骨”包。详细信息取决于您的操作系统和所使用的软件库。对于Debian家族来说,它通常是postgresql-contrib-13 (用于Postgres 13)。或者仅仅是红帽家族的postgresql-contrib。以下是与此相关的答案:

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

https://dba.stackexchange.com/questions/37351

复制
相关文章

相似问题

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