반응형
게시물:복합 키를 사용하는 방법?
복합 키를 만들 때 구문 오류를 이해할 수 없습니다.제가 여러 가지를 테스트했기 때문에 논리적 오류일 수 있습니다.
Postgres에서 복합 키를 만들려면 어떻게 해야 합니까?
CREATE TABLE tags
(
(question_id, tag_id) NOT NULL,
question_id INTEGER NOT NULL,
tag_id SERIAL NOT NULL,
tag1 VARCHAR(20),
tag2 VARCHAR(20),
tag3 VARCHAR(20),
PRIMARY KEY(question_id, tag_id),
CONSTRAINT no_duplicate_tag UNIQUE (question_id, tag_id)
);
ERROR: syntax error at or near "("
LINE 3: (question_id, tag_id) NOT NULL,
^
사용자의 컴파운드PRIMARY KEY
사양이 이미 원하는 작업을 수행합니다.구문 오류가 있는 행을 생략하고 중복된 행을 생략합니다.CONSTRAINT
(잠재적으로 암시됨), 또한:
CREATE TABLE tags
(
question_id INTEGER NOT NULL,
tag_id SERIAL NOT NULL,
tag1 VARCHAR(20),
tag2 VARCHAR(20),
tag3 VARCHAR(20),
PRIMARY KEY(question_id, tag_id)
);
NOTICE: CREATE TABLE will create implicit sequence "tags_tag_id_seq" for serial column "tags.tag_id"
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "tags_pkey" for table "tags"
CREATE TABLE
pg=> \d tags
Table "public.tags"
Column | Type | Modifiers
-------------+-----------------------+-------------------------------------------------------
question_id | integer | not null
tag_id | integer | not null default nextval('tags_tag_id_seq'::regclass)
tag1 | character varying(20) |
tag2 | character varying(20) |
tag3 | character varying(20) |
Indexes:
"tags_pkey" PRIMARY KEY, btree (question_id, tag_id)
당신이 받고 있는 오류는 라인 3에 있습니다. 즉, 라인 3에 없습니다.
CONSTRAINT no_duplicate_tag UNIQUE (question_id, tag_id)
그러나 이전:
CREATE TABLE tags
(
(question_id, tag_id) NOT NULL,
정확한 테이블 정의는 필로우가 표시한 것과 같습니다.
그리고 태그 1, 태그 2, 태그 3에 고유한 내용을 추가하려면(매우 의심스럽게 들립니다) 구문은 다음과 같습니다.
CREATE TABLE tags (
question_id INTEGER NOT NULL,
tag_id SERIAL NOT NULL,
tag1 VARCHAR(20),
tag2 VARCHAR(20),
tag3 VARCHAR(20),
PRIMARY KEY(question_id, tag_id),
UNIQUE (tag1, tag2, tag3)
);
또는 원하는 대로 제약 조건의 이름을 지정하려는 경우:
CREATE TABLE tags (
question_id INTEGER NOT NULL,
tag_id SERIAL NOT NULL,
tag1 VARCHAR(20),
tag2 VARCHAR(20),
tag3 VARCHAR(20),
PRIMARY KEY(question_id, tag_id),
CONSTRAINT some_name UNIQUE (tag1, tag2, tag3)
);
언급URL : https://stackoverflow.com/questions/1285967/postgres-how-to-do-composite-keys
반응형
'programing' 카테고리의 다른 글
배열 요소를 Bash에서 별도의 줄로 인쇄하시겠습니까? (0) | 2023.05.07 |
---|---|
의 문자열에서 분음 부호(악센트)를 제거하려면 어떻게 해야 합니까?NET? (0) | 2023.05.07 |
WPF 문자열 형식={0:C} 달러로 표시 (0) | 2023.05.07 |
Linux: 대상 dir(존재하지 않는 경우) 복사 (0) | 2023.05.07 |
MVVM을 사용하여 WPF에서 새 창을 생성하는 최상의 방법 (0) | 2023.05.07 |