반응형
Postgresql에서 두 열의 조합에 대해 고유한 강제 적용
Postgre에 테이블을 차리고 싶습니다.SQL: 두 열이 함께 고유해야 합니다.두 값을 공유하는 두 값이 없는 한 두 값의 값을 여러 개 사용할 수 있습니다.
예:
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)
)
autoincrement
postgresql이 아닙니다.당신이 원하는 것은integer primary key generated always as identity
(또는serial
PG 9 이하를 사용하는 경우, 는 PG 10)에서 소프트 폐지되었습니다.
한다면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)
나처럼 당신이 여기에 착륙했다면:
- 이미 있던 테이블,
- 새 컬럼을 추가해야 합니다.
- 또한 새 열과 이전 열에 새로운 고유한 제약 조건을 추가해야 합니다.
- 모든 것을 취소할 수 있다(즉, 이행 내용을 기록할 수 있다)
위의 답변 중 하나를 활용하여 확장함으로써 다음과 같은 이점을 얻을 수 있었습니다.
-- up
ALTER TABLE myoldtable ADD COLUMN newcolumn TEXT;
ALTER TABLE myoldtable ADD CONSTRAINT myoldtable_oldcolumn_newcolumn_key UNIQUE (oldcolumn, newcolumn);
---
ALTER TABLE myoldtable DROP CONSTRAINT myoldtable_oldcolumn_newcolumn_key;
ALTER TABLE myoldtable DROP COLUMN newcolumn;
-- down
통상적인 UNIQUIRE RESTRAN :)
CREATE TABLE example (
a integer,
b integer,
c integer,
UNIQUE (a, c));
자세한 것은 이쪽
언급URL : https://stackoverflow.com/questions/14221775/in-postgresql-force-unique-on-combination-of-two-columns
반응형
'programing' 카테고리의 다른 글
bash는 함수의 정의를 표시할 수 있습니까? (0) | 2023.04.12 |
---|---|
WPF의 Windows 7 테마 (0) | 2023.04.12 |
Git의 리모트 브랜치 추적을 중지하려면 어떻게 해야 합니까? (0) | 2023.04.12 |
Array Excel VBA 요소의 반환 색인 (0) | 2023.04.12 |
Xcode 4는 타겟 디바이스에서 "finished running"이라고 표시되며, 아무 일도 일어나지 않습니다. (0) | 2023.04.12 |