在MySQL中,不需要为外键约束指定符号名.如果没有给出名称,InnoDB会自动创建一个唯一的名称.
无论如何,这是我使用的惯例:
fk_[referencing table name]_[referenced table name]_[referencing field name]
例子:
CREATE TABLE users(
user_id int,
name varchar(100)
);
CREATE TABLE messages(
message_id int,
user_id int
);
ALTER TABLE messages ADD CONSTRAINT fk_messages_users_user_id
FOREIGN KEY (user_id) REFERENCES users(user_id);
我try 在引用和引用表中使用相同的字段名,如上例中的user_id
.当这不实用时,我还将引用的字段名附加到外键名.
这种命名约定允许我通过查看表定义来"猜测"符号名,此外,它还保证了名称的唯一性.