Есть две таблицы groups и students,
groups
id | name |
1 | BB-31 |
2 | BB-32 |
3 | PR-41 |
students
id | group |
1 | BB-31 |
2 | PR-41 |
На groups.name и students.group весит forgeign key. Как сделать что-бы при изменении данных в groups.name они же сразу менялись в students.group?
Очень неправильно вешать связь между таблицам на изменяемое поле вроде name. Обычно в каждую таблицу добавляют так называемый суррогатный ключ, то самое поле id типа INT NOT NULL AUTO_INCREMENT.
По меньшей мере это решение избавит вас от необходимости одновременного изменения полей в связанных таблицах.
Но, если такое изменение всё-таки нужно, используйте внешние ключи с опцией каскадного обновления.
Объявляя таблицу students, опишите внешний ключ:
CREATE TABLE students
(
id INT NOT NULL AUTO_INCREMENT,
`group` NOT NULL VARCHAR(100),
PRIMARI KEY (id),
FOREIGH KEY (`group`) REFERENCES groups (name) ON UPDATE CASCADE
);
Мы заключаем название поля group в обратные апострофы, потому что оно совпадает с началом ключевого слова GROUP BY.
Теперь, при изменении поля groups.name будет меняться поле students.group у всех студентов из данной группы.
Детали: https://dev.mysql.com/doc/refman/5.6/en/create-table-foreign-keys.html
Продвижение своими сайтами как стратегия роста и независимости