4

Does the following in MySQL:

alter table TABLE_A 
ADD CONSTRAINT fk_id (id) REFERENCES TABLE_B(id) 
ON DELETE CASCADE ON UPDATE CASCADE;

do the same as

alter table TABLE_A 
ADD FOREIGN KEY (id) REFERENCES TABLE_B(id);

except that it also adds a BTREE index on the relationship? Or do they complement each other?

4

2 回答 2

5

两个查询或多或少相同,但根据手册FOREIGN KEY两个查询中都应该存在。

[CONSTRAINT [symbol]] FOREIGN KEY
[index_name] (index_col_name, ...)
REFERENCES tbl_name (index_col_name,...)
[ON DELETE reference_option]
[ON UPDATE reference_option]

这样做的好处CONSTRAINT [symbol]是您可以命名约束而不是 MySQL 为您生成名称;此符号在数据库中必须是唯一的,并且可以用于以后删除约束。

生成的符号名称可以通过创建后查看表结构来查看:

SHOW CREATE TABLE TABLE_A;
于 2012-11-26T14:49:39.617 回答
0

CONSTRAINT语法纯粹用于命名目的,因此您可以使用该名称在表的任何其他列中实现约束。

你对这个问题的回答

于 2014-02-19T07:19:33.893 回答