Não consigo entender o erro de sintaxe ao criar uma chave composta. Pode ser um erro lógico, porque testei muitas variedades.
Como você cria chaves compostas no 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 준영
fonte
fonte
tag1
atravéstag3
sugerem-me que você pode ter refinamentos de design para fazer. Talvez uma pergunta separada, com uma descrição em linguagem natural de seu modelo e alguns registros de exemplo, ajude.O erro que você está recebendo está na linha 3. ou seja, não está em
mas antes:
A definição correta da mesa é como a do pilcrow.
E se você deseja adicionar exclusivo em tag1, tag2, tag3 (o que parece muito suspeito), a sintaxe é:
ou, se você quiser que a restrição seja nomeada de acordo com seu desejo:
fonte