我的父表有外国三个外键但是我想单独删除父表中的行,如何实现呢? 当前使用的查询是
DELETE FROM TableName WHERE ColumnName= '89416'
查询显示错误:Cannot delete or update a parent row: a foreign key constraint fails
答案 0 :(得分:1)
您应该修改您的要求,我们维护父子关系表关系,因为我们需要连接的数据。
但是无论如何要删除,那么就有一个选项(禁用约束,然后在删除后启用)。但同样会产生问题。
答案 1 :(得分:-1)
通过创建子表来更改子表,如下面的示例所示:
CREATE TABLE Worker (
WorkerID smallint auto_increment,
WorkerType varchar(45) NOT NULL,
WorkerName varchar(45) NOT NULL,
Position varchar(45) NOT NULL,
TaxFileNumber int NOT NULL,
Address varchar(100) ,
Phone varchar(20) ,
SupervisorID smallint ,
PRIMARY KEY (WorkerID),
FOREIGN KEY (SupervisorID) REFERENCES Worker(WorkerID)
ON DELETE SET NULL
ON UPDATE CASCADE
);
您只需添加ON DELETE SET NULL
或NO ACTION
即可。在使用之前,请查看类似问题的this answer,它解释了不同的行为。