'ibfk' 在 MySQL 中代表什么?

Mye*_*yer 31 mysql innodb foreign-key constraint

如果我在 phpmyadmin 中为表 'photos' 创建外键约束,我后来看到该约束名为 'photos_ibfk_1',下一个约束名为 'photos_ibfk_2',等等。从这里我收集到 [tablename]_ibfk_constraintIndex 是MySQL 中数据库约束的约定。这样对吗?IBFK 代表什么?

atx*_*dba 31

innodb 外键。这只是简写的命名约定。你可以称它为 asdfqwerty,这个名字仍然有效。


Mar*_*Roy 9

尽管外键名称可以是任何名称,但遵循将表名称放在首位的约定实际上是一个很好的做法。

最重要的原因是外键名称在数据库中必须是唯一的(与索引名称相反,索引名称只能在每个表中唯一)。因此,通过遵循此约定,外键名称只需在每个表中是唯一的。

就个人而言,我使用约定[table_name]_fk_[field_name]

为了命名您的外键,您必须明确说明表上的约束,而不仅仅是外键。

简单方法(自动命名,会导致[table_name]_ibfk_[index]):

ALTER TABLE `[table_name]`
  ADD FOREIGN KEY (`[field_name]`)
    REFERENCES `[foreign_table_name]`(`[foreign_field_name]`);
Run Code Online (Sandbox Code Playgroud)

显式方法(将导致[table_name]_fk_[field_name]):

ALTER TABLE `[table_name]`
  ADD CONSTRAINT `[table_name]_fk_[field_name]`
    FOREIGN KEY (`[field_name]`)
    REFERENCES `[foreign_table_name]`(`[foreign_field_name]`);
Run Code Online (Sandbox Code Playgroud)