如果你没有发现自己经常在创建后引用fk,那么一个选择是保持简单,让MySQL为你做命名(正如Daniel Vassallo在他的回答开头提到的那样)。
虽然您无法使用此方法唯一地“猜测”约束名称 - 您可以通过运行查询轻松找到外键约束名称:
use information_schema;
select TABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME, REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME from KEY_COLUMN_USAGE where REFERENCED_TABLE_SCHEMA = 'your_db_schema_name' ORDER BY TABLE_NAME;
例如,您可能会从查询中收到以下内容:
+------------+-------------+-----------------+-----------------------+------------------------+
| TABLE_NAME | COLUMN_NAME | CONSTRAINT_NAME | REFERENCED_TABLE_NAME | REFERENCED_COLUMN_NAME |
+------------+-------------+-----------------+-----------------------+------------------------+
| note | taskid | note_ibfk_2 | task | id |
| note | userid | note_ibfk_1 | user | id |
| task | userid | task_ibfk_1 | user | id |
+------------+-------------+-----------------+-----------------------+------------------------+
如果这个额外的步骤对您来说不是太多,那么您应该能够轻松找到您正在寻找的fk。