我正在学习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]`;

10-05 20:29
查看更多