我无法弄清楚这两者之间有什么区别。
CONSTRAINT fk_PerOrders FOREIGN KEY (P_Id) REFERENCES ..
和
FOREIGN KEY (P_Id) REFERENCES ..
它只是命名还是其他什么?
答案 0 :(得分:2)
作为foreign keys indicates上的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, 使用的名称生成外键索引名称 引用外键列。
答案 1 :(得分:1)
使用CONSTRAINT
子句,您可以为外键约束定义约束名称。如果缺少MySQL将自动生成名称。