Предотвратить дублирование набора столбцов - PullRequest
0 голосов
/ 26 июня 2018
CREATE TABLE middle_table (
        id SERIAL PRIMARY KEY NOT NULL,
        col_a_id INTEGER NOT NULL REFERENCES table_b (id),
        col_b_id INTEGER NOT NULL REFERENCES table_b (id)
    );

Я хочу предотвратить дублирование col_a_id & col_b_id вместе, таким образом, чтобы это было допустимо:

INSERT INTO middle_table VALUES (1,2), (1,3), (2,3);

Принимая во внимание, что эти вставки не будут недействительными:

INSERT INTO middle_table VALUES (1,2), (1,2);

Есть ли простой способ сделать это без создания пользовательских функций и всего?

1 Ответ

0 голосов
/ 26 июня 2018

Вы бы использовали уникальное ограничение:

CREATE TABLE middle_table (
    id SERIAL PRIMARY KEY NOT NULL,
    col_a_id INTEGER NOT NULL REFERENCES table_b (id),
    col_b_id INTEGER NOT NULL REFERENCES table_b (id),
    UNIQUE (col_a_id, col_b_id)
);
...