Удаление таблиц в реляционной базе данных (InnoDB) - PullRequest
0 голосов
/ 09 апреля 2020

Я управлял реляционной базой данных и хочу удалить таблицу и их сыновей (ссылка в качестве справочного значения, например, fk_table_value).

Когда я делаю простое «DELETE FROM companies WHERE id=4», у меня появляется это сообщение об ошибке: «Невозможно удалить или обновить родительскую строку: ограничение внешнего ключа не выполняется».

Здесь вы можете увидеть мою карту базы данных.

database map

1 Ответ

2 голосов
/ 09 апреля 2020
CREATE TABLE buildings (
    building_no INT PRIMARY KEY AUTO_INCREMENT,
    building_name VARCHAR(255) NOT NULL,
    address VARCHAR(255) NOT NULL
);

CREATE TABLE rooms (
    room_no INT PRIMARY KEY AUTO_INCREMENT,
    room_name VARCHAR(255) NOT NULL,
    building_no INT NOT NULL,
    FOREIGN KEY (building_no)
        REFERENCES buildings (building_no)
        ON DELETE CASCADE
);

Допустим, вы определили две таблицы, подобные этой. Таким образом, мы видим, что у комнат есть внешний ключ на зданиях, и он установлен на УДАЛЕННЫЙ КАСКАД. Это означает, что если объект из зданий будет удален, будет удалена вся комната с этим building_no.

Это также решит вашу проблему.

...