Je ne comprends pas l'erreur de syntaxe lors de la création d'une clé composite. Cela peut être une erreur de logique, car j'ai testé de nombreuses variétés.
Comment créer des clés composites dans 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 준영
la source
la source
tag1
partag3
me portent à croire que vous pourriez avoir d'améliorations de conception à faire. Peut-être qu'une question distincte, avec une description en langage naturel de votre modèle et quelques exemples d'enregistrements, serait utile.L'erreur que vous obtenez est à la ligne 3. c'est-à-dire qu'elle n'est pas
mais plus tôt:
La définition correcte de la table est comme le montre le pilcrow.
Et si vous souhaitez ajouter des éléments uniques sur tag1, tag2, tag3 (ce qui semble très suspect), la syntaxe est la suivante:
ou, si vous souhaitez que la contrainte soit nommée selon votre souhait:
la source