删除关系数据库 (InnoDB) 上的表

Deleting tables on a relational database (InnoDB)

我管理了一个关系数据库,我想删除一个table和他们的儿子(reference作为参考值,比如fk_table_value)。

当我做一个简单的“DELETE FROM companies WHERE id=4”时,我得到了错误信息:"Cannot delete or update a parent row: a foreign key constraint fails"。

在这里你可以看到我的数据库地图。

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
);

假设您定义了两个这样的表。所以我们可以看到房间在建筑物上有一个外键,它被设置为 ON DELETE CASCADE。这意味着如果建筑物中的实体被删除,所有具有该 building_no 的房间也将被删除。

这也将解决您的问题。