2011-02-24 67 views
0

我正在学习mysql多对多的关系。在我研究索引时,我发现了下面的问题。这是正确的mysql约束语法吗?

How to properly index a linking table for many-to-many connection in MySQL?

Quassnoi回答了详细的回答。在他的回答中,我找到了以下语法。

“ALTER TABLE table_table添加约束pk_table1_table2(TABLE_1,TABLE_2)”

我改变 “table_table” 我叫 “postcategory” 加入表,改变 “表1” 到 “后”, “表2” 到“类别“

我得到了一个语法错误,当我执行它..

我在做什么错?我想我完全不理解Quassnoi的意图。

+1

您可以发布您确切的ALTER TABLE语句请

所以,如果这是一个主要的,因为这样,我会为改写? – philwinkle 2011-02-24 05:43:01

+0

@philwinkle //所以我有post,category和postcategory表。我的alter语句是“ALTER table postcategory add constraint pk_post_category(post,category);”我认为pk_post_category不是一个有效的语法。 – Moon 2011-02-24 05:45:14

回答

1

你从上面反应列出了ALTER TABLE声明。如果你想添加主键,它可能不应该是多列(复合),如果是这样,你错过了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]`; 
+0

//我猜这是主要的。我会尝试你的alter语句。谢谢!! – Moon 2011-02-24 06:20:36

0

您需要告诉mysql您添加的是哪种约束:主键,唯一键或外键。什么是得到语法错误的完整陈述?

ALTER table postcategory add constraint pk_post_category(post,category); 

你在这里定义约束,而不是一个指标:如

+0

//就像我写的,我试图给我的连接表添加一个索引。所以..我读了http://stackoverflow.com/questions/571309/how-to-properly-index-a-linking-table-for-many-to-many-connection-in-mysql文章,发现“ALTER TABLE table_table ADD CONSTRAINT pk_table1_table2(table_1,table_2)“,在我的结尾不起作用 – Moon 2011-02-24 05:52:42

+0

查看[ALTER TABLE语句的语法](http://dev.mysql.com/doc/refman/5.5 /en/alter-table.html)。 – 2011-02-24 08:17:17