Я не могу понять синтаксическую ошибку при создании составного ключа. Это может быть логическая ошибка, потому что я испытал много разновидностей.
Как вы создаете составные ключи в 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
Лео Леопольд Герц 준영
источник
источник
tag1
черезtag3
предложить мне , что вы могли бы иметь дополнительные конструктивные усовершенствования , чтобы сделать. Возможно, поможет отдельный вопрос с описанием вашей модели на естественном языке и несколькими примерами записей.Ошибка, которую вы получаете, находится в строке 3. т.е. ее нет в
но раньше:
Правильное определение таблицы похоже на то, что показал Pilcrow.
И если вы хотите добавить уникальность к тегам tag1, tag2, tag3 (что звучит очень подозрительно), то синтаксис следующий:
или, если вы хотите, чтобы ограничение было названо по вашему желанию:
источник