Необходимо удалить ограничения внешнего ключа для Класса, Действия и Книг и заново создать их с предложением ON UPDATE CASCADE.
SHOW CREATE TABLE class;
SHOW CREATE TABLE activity;
SHOW CREATE TABLE books;
Здесь будут показаны имена ограничений внешнего ключа. Вам понадобится имя ограничения внешнего ключа на student_id
.
ALTER TABLE class DROP FOREIGN KEY [enter the foreign key name here], ADD CONSTRAINT [enter foreign key name here] FOREIGN KEY (`student_id`) REFERENCES student (`student_id`) ON UPDATE CASCADE;
ALTER TABLE activity DROP FOREIGN KEY [enter the foreign key name here], ADD CONSTRAINT [enter foreign key name here] FOREIGN KEY (`student_id`) REFERENCES student (`student_id`) ON UPDATE CASCADE;
ALTER TABLE books DROP FOREIGN KEY [enter the foreign key name here], ADD CONSTRAINT [enter foreign key name here] FOREIGN KEY (`student_id`) REFERENCES student (`student_id`) ON UPDATE CASCADE;
Это говорит MySQL, что если вы обновите student_id в таблице учеников, чтобы обновить значение в ссылочных таблицах. В зависимости от вашей бизнес-логики зависит от того, сохраняете ли вы предложение ON UPDATE CASCADE. Я никогда не использую его лично, потому что редко вы обновляете первичный ключ.
Если у вас нет внешних ключей, вы должны удалить предложение drop и оставить предложение add.
Структура создана, чтобы теперь обновлять ваш student_id и каскадировать его с другими таблицами.
UPDATE student SET student_id = student_id + 72804; -- Minus 1 because the values already in here start at 1, not 0.
Вы не хотите устанавливать auto_increment равным 72805, потому что именно здесь вы хотите, чтобы первая запись начиналась с start , и теперь у вас есть строка, занимающая это значение.
Этот запрос вернет вам значение, которое вы теперь должны установить для значения auto_increment.
SELECT MAX(student_id) + 1 FROM student;
Теперь запустите оператор таблицы ALTER и установите для auto_increment значение, которое вы получили из вышеприведенного запроса.
ALTER TABLE student AUTO_INCREMENT = [Value you receive from the SELECT MAX()].
Когда это будет сделано, я бы сбросил и заново создал внешние ключи без КАДКА ОБНОВЛЕНИЯ ОБНОВЛЕНИЯ.
ALTER TABLE class DROP FOREIGN KEY [enter the foreign key name here], ADD CONSTRAINT [enter foreign key name here] FOREIGN KEY (`student_id`) REFERENCES student (`student_id`);
ALTER TABLE activity DROP FOREIGN KEY [enter the foreign key name here], ADD CONSTRAINT [enter foreign key name here] FOREIGN KEY (`student_id`) REFERENCES student (`student_id`);
ALTER TABLE books DROP FOREIGN KEY [enter the foreign key name here], ADD CONSTRAINT [enter foreign key name here] FOREIGN KEY (`student_id`) REFERENCES student (`student_id`);