【问题标题】:Difference between using KEY/CONSTRAINT instead of FOREIGN KEY?使用 KEY/CONSTRAINT 而不是 FOREIGN KEY 的区别?
【发布时间】:2013-09-01 20:06:39
【问题描述】:

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

【问题讨论】:

    标签: php mysql laravel


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2018-10-11
      • 1970-01-01
      • 2012-11-20
      • 1970-01-01
      • 2014-01-02
      • 2020-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多