Есть две таблицы 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
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
В таблице есть поля : date, id, amountНужно достать запросом сумму amount-ов по неделям, которые превышают 96000
друзья Парсю я значит сайт используя Питон, через BS и requests, никого не трогаю Но потом замечаю что при выводе всего кода страницы, отсутствует...
Подгружается с сервера страница с большим обьемом текста в textarea, до 10к строк