0

我正在使用 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 使用KEYandCONSTRAINT ... FOREIGN KEY ... REFERENCES ...来创建新索引,而不是在FOREIGN KEY ... REFERENCES ...引用外键的列上更常见?

4

1 回答 1

0

因为 MySql 只是忽略了内联引用规范,所以他们在这里写了这个:http: //dev.mysql.com/doc/refman/5.6/en/create-table.html

MySQL 不识别或不支持“内联引用规范”(如 SQL 标准中所定义),其中引用被定义为列规范的一部分。MySQL 仅在指定为单独的 FOREIGN KEY 规范的一部分时才接受 REFERENCES 子句。

于 2013-09-01T22:31:24.207 回答