我正在学习mysql的多对多关系。在我研究索引时,我发现了以下问题。
How to properly index a linking table for many-to-many connection in MySQL?
Quassnoi回答了一个详细的答案。在他的回答中,我找到了以下语法。
“ALTER TABLE table_table ADD CONSTRAINT pk_table1_table2(table_1,table_2)”
我将“table_table”更改为名为“postcategory”的加入表,并将“table1”更改为“post”,将“table2”更改为“category”
执行时出现语法错误..
我做错了什么?我想我完全不理解Quassnoi的用意。
答案 0 :(得分:1)
您的上述回复会将您的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]`;
答案 1 :(得分:0)
你需要告诉mysql你要添加什么样的约束:主键,唯一键或外键。什么是获得语法错误的完整语句?