我正在学习mysql多对多关系。在研究索引时,我发现了以下问题。
How to properly index a linking table for many-to-many connection in MySQL?
Quassnoi回答了一个详细的答案。在他的回答中,我发现以下语法。
“更改表table_table添加约束pk_table1_table2(table_1,table_2)”
我将“ table_table”更改为名为“ postcategory”的联接表,并将“ table1”更改为“ post”,将“ table2”更改为“ category”
我执行它时遇到语法错误。
我究竟做错了什么?我认为我不太了解Quassnoi的意图。
最佳答案
您在上面的回答中将ALTER TABLE
语句列出为:
ALTER table postcategory add constraint pk_post_category(post,category);
您是在这里定义约束,而不是索引。如果要添加主键,则可能不应该将其作为多列(复合),如果是,则缺少
PRIMARY
关键字。如果要添加外键,则缺少REFERENCES
声明。因此,如果它是主要的,我将重写为:
ALTER TABLE `postcategory` ADD CONSTRAINT PRIMARY KEY `pk_post_category` (`post`,`category`);
如果是外键:
ALTER TABLE `postcategory` ADD CONSTRAINT `fk_post_category` (`post`) REFERENCES `[tablename].[column]`;