删除关系数据库 (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 的房间也将被删除。
这也将解决您的问题。
我管理了一个关系数据库,我想删除一个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 的房间也将被删除。
这也将解决您的问题。