这是正确的mysql约束语法吗?

时间:2011-02-24 05:40:04

标签: mysql syntax constraints

我正在学习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的用意。

2 个答案:

答案 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你要添加什么样的约束:主键,唯一键或外键。什么是获得语法错误的完整语句?