В Postgresql сила уникальна для комбинации двух столбцов



Я хотел бы настроить таблицу в postgresql таким образом, что два столбца вместе должны быть уникальными. Там может быть несколько значений любого значения, пока нет двух, которые разделяют оба.



например:



CREATE TABLE someTable (
id int PRIMARY KEY AUTOINCREMENT,
col1 int NOT NULL,
col2 int NOT NULL
)


и col1 и col2 можно повторить, но не в то же время. Таким образом, это будет разрешено (не включая идентификатор)



1 1
1 2
2 1
2 2


но не этот:



1 1
1 2
1 1 -- would reject this insert for violating constraints
617   3  

3 ответов:

CREATE TABLE someTable (
    id serial primary key,
    col1 int NOT NULL,
    col2 int NOT NULL,
    unique (col1, col2)
)

autoincrement не является postgresql. Вы хотите serial.

если col1 и col2 делают уникальный и не может быть null, то они делают хороший первичный ключ:

CREATE TABLE someTable (
    col1 int NOT NULL,
    col2 int NOT NULL,
    primary key (col1, col2)
)

создать уникальное ограничение, что два числа вместе не могут быть повторены:

ALTER TABLE someTable
ADD UNIQUE (col1, col2)

похоже на обычное уникальное ограничение :)

CREATE TABLE example (
a integer,
b integer,
c integer,
UNIQUE (a, c));

больше здесь

Comments

    Ничего не найдено.