首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >约束符号和外键索引名->有什么区别?

问约束符号和外键索引名->有什么区别?
EN

Stack Overflow用户
提问于 2013-12-09 15:07:51
回答 2查看 2.6K关注 0票数 7

在mysql中,外键的定义如下:

代码语言:javascript
复制
[CONSTRAINT [symbol]] FOREIGN KEY
    [index_name] (index_col_name, ...)
    REFERENCES tbl_name (index_col_name,...)
    [ON DELETE reference_option]
    [ON UPDATE reference_option]

为什么我们需要约束和符号?它似乎有index_name无论如何-所以我完全不明白的理由约束关键字。有人能澄清这是做什么的吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-09 15:31:57

CONSTRAINT是告诉MySQL希望添加约束的关键词。[symbol]是约束的可选名称。你可以随便给它起什么名字。如果省略该名称,MySQL将在内部自行生成一个名称。

使用fk前缀(如fk_something )是很好的。

在删除约束时,需要该符号名:

代码语言:javascript
复制
ALTER TABLE tbl_name DROP FOREIGN KEY fk_something;

您可以使用SHOW CREATE TABLE获取符号名。

代码语言:javascript
复制
SHOW CREATE TABLE tbl_name;

不能使用索引名称来引用约束。在发出CONSTRAINT子句时可能添加的任何索引稍后可能会自动删除(例如,如果显式地添加了将起作用的索引)。

所有这些都在MySQL文档中得到了更详细的回答。

票数 7
EN

Stack Overflow用户

发布于 2013-12-09 15:11:29

来自MySQL参考文档

index_name表示外键ID。如果给定,则如果明确定义外键索引,则忽略它。否则,如果MySQL为外键创建索引,它将使用index_name作为索引名。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20473855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档