[sql] PostgreSQL에서 두 열의 조합에서 고유 한 힘

PostgreSQL에서 두 열이 고유해야하도록 테이블을 설정하고 싶습니다. 두 값을 공유하는 두 개가없는 한 두 값 중 여러 값이있을 수 있습니다.

예를 들어 :

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

그래서, col1그리고 col2하지만 동시에, 반복 할 수 있습니다. 따라서 이것은 허용됩니다 (ID는 포함하지 않음)

1 1
1 2
2 1
2 2

그러나 이것은 아닙니다 :

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



답변

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

autoincrementpostgresql이 아닙니다. 당신은 원합니다 serial.

col1과 col2가 고유하고 널이 될 수 없으면 좋은 기본 키를 만듭니다.

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


답변

두 숫자를 함께 반복 할 수 없다는 고유 제한 조건을 작성하십시오.

ALTER TABLE someTable
ADD UNIQUE (col1, col2)


답변

일반 UNIQUE CONSTRAINT와 같은 것 같습니다 🙂

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

여기


답변