小编Mat*_*jaž的帖子

PostgreSQL 范围边界上的外键

是否可以在 PostgreSQL 9.6 中对范围(在我的情况下为整数)的下限和上限应用外键约束?

目前我将下限和上限保留在两列中,但希望将它们统一到一个范围列中,同时保留外键引用。

例子

我有一个包含会话列表的表,例如:

CREATE TABLE sessions (
    session_id    SERIAL      PRIMARY KEY,
    session_start TIMESTAMPTZ NOT NULL,
    description   TEXT
);
Run Code Online (Sandbox Code Playgroud)

然后是这些会议的组表,目前表示为:

CREATE TABLE session_groups (
    group_id      SERIAL  PRIMARY KEY,
    first_session INTEGER NOT NULL UNIQUE,
    last_session  INTEGER NOT NULL UNIQUE,
    description   TEXT,

    FOREIGN KEY (first_session)
                REFERENCES sessions (session_id)
                ON UPDATE CASCADE
                ON DELETE RESTRICT,
    FOREIGN KEY (last_session)
                REFERENCES sessions (session_id)
                ON UPDATE CASCADE
                ON DELETE RESTRICT,

    CONSTRAINT last_session_after_first
         CHECK (last_session >= first_session)
);
Run Code Online (Sandbox Code Playgroud)

我想要什么:

CREATE TABLE session_groups (
    group_id …
Run Code Online (Sandbox Code Playgroud)

postgresql foreign-key range-types postgresql-9.6

4
推荐指数
1
解决办法
831
查看次数