MYSQL / Laravel迁移将复合密钥更改为自动增量

时间:2018-07-24 11:33:33

标签: mysql laravel laravel-5.4

我有一个包含两行的数据透视表(exercise_task)。目前,这两行构成了一个复合主键。
不幸的是,事实证明这是一个可怕的想法,因为现在我需要能够多次将同一任务添加到练习中。

因此,我要么需要切换到自动递增的主键。

此外,我需要添加一个索引行(指示顺序),以便也可以扩展复合键。

问题
实现此目标的最佳方法是什么?由于数据库已经在使用中,所以我不能只删除表。

原始迁移

Schema::create('exercise_task', function (Blueprint $table) {
        $table->integer('exercise_id')->unsigned();
        $table->integer('task_id')->unsigned();

        $table->foreign('exercise_id')->references('id')->on('exercises')
        ->onUpdate('CASCADE')->onDelete('CASCADE');
        $table->foreign('task_id')->references('id')->on('tasks')
            ->onUpdate('CASCADE')->onDelete('CASCADE');

        $table->primary(['exercise_id', 'task_id']);
    });

2 个答案:

答案 0 :(得分:0)

我建议您重构代码以从头开始解决此问题,或者在MySQL终端窗口中使用以下代码添加索引行:

INSERT INTO name VALUES ('column1 value', 'column2 value', 'column3 value', 'column4 value');

答案 1 :(得分:0)

我得到以下结果:
1.删​​除数据透视表的所有外键(这是键)
2.删除主键
3.添加新的主键(我决定通过新的索引列扩展组合键)
4.读取先前删除的外键。