mysql/laravel迁移将复合键更改为autoincrement

yduiuuwa  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(346)

我有一个有两行的透视表(练习任务)。目前,这两行构建了一个复合主键。
不幸的是,原来这是一个可怕的想法,因为现在我需要能够添加相同的任务几次到一个练习。
因此,我要么需要切换到一个自动递增的主键。
此外,我需要添加一个索引行(指示顺序),这样也可以扩展复合键。
问题
实现这一目标的最佳方法是什么?由于数据库已经在使用中,我不能直接删除表。
原始迁移

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']);
    });
1zmg4dgp

1zmg4dgp1#

我建议您重构代码以从头开始修复此问题,或者在mysql终端窗口中使用以下代码添加索引行: INSERT INTO name VALUES ('column1 value', 'column2 value', 'column3 value', 'column4 value');

zc0qhyus

zc0qhyus2#

我最终得出以下结论:
1删除透视表的所有外键(这是键)
2删除主键
三。添加新的主键(我决定通过新的索引列扩展复合键)
4读取先前丢弃的外键。

相关问题