Laravel. Как добавить 3й primary key к существующей таблице?
Есть миграция Orchid'а для ролей. В таблице уже имеются 2 ключа
Schema::create('role_users', function (Blueprint $table) {
$table->unsignedBigInteger('user_id');
$table->unsignedInteger('role_id');
$table->primary(['user_id', 'role_id']);
$table->foreign('user_id')
->references('id')
->on('users')
->onUpdate('cascade')
->onDelete('cascade');
$table->foreign('role_id')
->references('id')
->on('roles')
->onUpdate('cascade')
->onDelete('cascade');
});
Необходимо добавить еще 3й =>
$table->string('language', 5)
->primary()
->default('')
->comment('to restrict user access to permissions with languages');
При выполнении миграции, которая должна добавить 3 primary key выскакивает следующая ошибка
Syntax error or access violation: 1068 Multiple primary key defined (SQL: ALTER TABLE `role_users` ADD PRIMARY KEY(`language`))
Ответы (1 шт):
Автор решения: Akina
→ Ссылка
Как добавить 3й primary key к существующей таблице?
Вопрос лишён смысла - таблица не может иметь более одного первичного ключа.
Если же речь о том, что есть композитный первичный ключ (вернее, выражение первичного ключа) из 2 полей, и надо, чтобы выражение первичного ключа состояло из трёх полей, то единственный способ достичь этого - удаление существующего первичного ключа и последующее создание нового, с требуемым выражением.