Jas*_*sir 7 mysql constraints foreign-keys
我无法弄清楚这两者之间有什么区别。
CONSTRAINT fk_PerOrders FOREIGN KEY (P_Id) REFERENCES ..
和
FOREIGN KEY (P_Id) REFERENCES ..
它只是命名,还是其他什么?
正如 MySQL外键手册所指出的,CONSTRAINT symbol_name约束语法的一部分是可选的:
[CONSTRAINT [symbol]] FOREIGN KEY
[index_name] (index_col_name, ...)
REFERENCES tbl_name (index_col_name,...)
[ON DELETE reference_option]
[ON UPDATE reference_option]
reference_option:
    RESTRICT | CASCADE | SET NULL | NO ACTION
区别在于外键的命名。正如上面链接的文件所描述的:
否则,MySQL 会隐式创建根据以下规则命名的外键索引:
• 如果已定义,则使用CONSTRAINT 符号值。否则,使用 FOREIGN KEY index_name 值。
• 如果 CONSTRAINT 符号或 FOREIGN KEY index_name 均未定义,则使用引用外键列的名称生成外键索引名称。