No puedo entender el error de sintaxis al crear una clave compuesta. Puede ser un error de lógica, porque he probado muchas variedades.
¿Cómo se crean claves compuestas en 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 준영
fuente
fuente
tag1
a través detag3
me sugieren que es posible que tenga otras mejoras de diseño que hacer. Quizás una pregunta separada, con una descripción en lenguaje natural de su modelo y algunos registros de ejemplo, ayudaría.El error que está recibiendo está en la línea 3. es decir, no está en
pero antes:
La definición correcta de la tabla es como se muestra en Pilcrow.
Y si desea agregar único en tag1, tag2, tag3 (que suena muy sospechoso), entonces la sintaxis es:
o, si desea que la restricción se nombre de acuerdo con su deseo:
fuente