Saya tidak dapat memahami kesalahan sintaks dalam membuat kunci komposit. Ini mungkin kesalahan logika, karena saya telah menguji banyak varietas.
Bagaimana Anda membuat kunci komposit di 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 준영
sumber
sumber
tag1
melaluitag3
menyarankan kepada saya bahwa Anda mungkin harus melakukan perbaikan desain lebih lanjut. Mungkin pertanyaan terpisah, dengan deskripsi bahasa alami dari model Anda dan beberapa rekaman contoh, akan membantu.Kesalahan yang Anda dapatkan ada di baris 3. yaitu tidak masuk
tapi sebelumnya:
Definisi tabel yang benar seperti yang ditunjukkan oleh pilcrow.
Dan jika ingin menambahkan unique pada tag1, tag2, tag3 (yang terdengar sangat mencurigakan), maka sintaksnya adalah:
atau, jika Anda ingin diberi nama kendala sesuai keinginan Anda:
sumber