我正在使用Laravel框架的迁移功能在数据库中创建外键。使用代码
Schema::table('posts', function($table){
$table->integer('category_id')->unsigned();
$table->foreign('category_id')
->references('id')
->on('categories');
});
生成MySQL输出(来自SHOW CREATE TABLE posts
)
`category_id` int(10) unsigned NOT NULL,
KEY `posts_category_id_foreign` (`category_id`),
CONSTRAINT `posts_category_id_foreign` FOREIGN KEY (`category_id`) REFERENCES `categories` (`id`)
为什么Laravel使用KEY
和CONSTRAINT ... FOREIGN KEY ... REFERENCES ...
来创建新索引而不是引用外键的列上更常见的FOREIGN KEY ... REFERENCES ...
?
答案 0 :(得分:0)
因为MySql只是忽略了内联引用规范,所以他们在这里写一下:http://dev.mysql.com/doc/refman/5.6/en/create-table.html
MySQL无法识别或支持“内联参考规范” (在SQL标准中定义),其中引用被定义为 列规范的一部分。 MySQL接受REFERENCES子句 仅当指定为单独的FOREIGN KEY规范的一部分时。