MySQL:给外键命名是否重要?

时间:2017-07-28 08:54:35

标签: mysql sql database phpmyadmin

请告诉我,我应该给外键命名吗?

CONSTRAINT constraint_name
FOREIGN KEY foreign_key_name (columns)
REFERENCES parent_table(columns)
ON DELETE action
ON UPDATE action

我可以通过它的名字对约束进行一些操作,但我能用外键名做什么?请给我一些例子。

2 个答案:

答案 0 :(得分:1)

是的。

如果您希望将来更改或删除约束,则可以仅使用名称。

<强> DROP FOREIGN KEY constraint_name;

你可以check here

答案 1 :(得分:1)

正如文档所述:

  

MySQL需要外键引用键的索引才能这样做   外键检查可以很快,不需要表扫描。 在   引用表时,必须有一个索引所在的外键   列被列为相同顺序的第一列。这样的   如果不是,则会自动在引用表上创建索引   存在。如果您创建,可能会稍后以静默方式删除此索引   另一个可用于强制执行外键约束的索引。   如果给定,则使用index_name,如前所述。

换句话说,您提供的不是“外键名称”,而是“(外键)索引名称”。

拥有索引名称对于跟踪该索引非常有用。

说实话,我不提供这样的名字。我宁愿在外键上明确声明一个索引,而不是让数据库为我做。

(注意:大多数数据库在声明外键时不会自动创建索引。)