В данном посте я хочу проверить механизм каскадного удаления связанных таблиц. Создам новую базу данных, 2 связанных таблицы – отделы (departments) и сотрудники (employee). Сделаю стартовое заполнение. И попробую удалить один из отделов… Все работы буду делать из консоли MySQL.exe для тренировки…
Создание БД из консоли…
Итак, БД DB_Company успешно создана на сервере mysql;
Создание таблиц в БД из консоли…
Таблица департаментов…
1 2 3 4 5 |
CREATE TABLE IF NOT EXISTS `db_company`.`Department` ( `Primary_id` INT NOT NULL AUTO_INCREMENT , `Dname` VARCHAR(45) NOT NULL DEFAULT ‘DefaultDepartment’ , PRIMARY KEY (`Primary_id`) ) ENGINE = InnoDB; |
Также создаём таблицу сотрудников…
1 2 3 4 5 6 7 |
CREATE TABLE IF NOT EXISTS `db_company`.`Employee` ( `Primary_id` INT NOT NULL AUTO_INCREMENT , `Name` VARCHAR(45) NOT NULL DEFAULT ‘DefaultDepartment’ , `Family` VARCHAR(45) NOT NULL DEFAULT ‘DefaultDepartment’ , `Age` VARCHAR(45) NOT NULL DEFAULT ‘DefaultDepartment’ , PRIMARY KEY (`Primary_id`) ) ENGINE = InnoDB; |
Как видно из рисунка – таблицы успешно созданы…
Связывание таблиц
Теперь свяжем таблицы через создание ограничения и внешнего ключа для таблицы employee… Но, для начала, нам нужно создать колонку для внешнего ключа…
Мы создали просто внешний ключ, а нам нужно создать внешний ключ с параметром каскадного удаления, поэтому удалим внешний ключ и создадим его снова с нужными параметрами…
Создаём внешний ключ с условием каскадного удаления…
Итак, проверим всё ли правильно, вызвав show create table…
Итак, ON DELETE CASCADE, установлен!
Заполнение таблиц
Теперь заполним таблицы некоторыми значениями. Пусть у нас будет 3 отдела – логистика, продажи, разработка…
И 6 сотрудников, по 2 на каждый отдел…
Теперь, если мы удалим, например 3 отдел Development из таблицы Department, то должны удалиться сотрудники Semen и Mihail…
Итак, механизм каскадного удаления в MySQL – прекрасно работает!
[block id=”mysql-first-steps”]