Nie mogę zrozumieć błędu składni podczas tworzenia klucza złożonego. Może to być błąd logiczny, ponieważ przetestowałem wiele odmian.
Jak tworzyć klucze złożone w 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,
^
sql
postgresql
composite-key
Léo Léopold Hertz 준영
źródło
źródło
tag1
przeztag3
sugerują mi się, że może mieć dalsze udoskonalenia konstrukcyjne do zrobienia. Być może pomocne byłoby oddzielne pytanie, z opisem twojego modelu w języku naturalnym i kilkoma przykładowymi zapisami.Błąd, który otrzymujesz, znajduje się w linii 3., tj. Go nie ma
ale wcześniej:
Prawidłowa definicja tabeli jest taka, jak pokazał Pilcrow.
A jeśli chcesz dodać unikalny do tag1, tag2, tag3 (co brzmi bardzo podejrzanie), składnia jest następująca:
lub, jeśli chcesz, aby ograniczenie zostało nazwane zgodnie z Twoim życzeniem:
źródło