如何从父表中删除一行而不从子表中删除一行?

时间:2014-07-16 07:42:06

标签: mysql sql

我的父表有外国三个外键但是我想单独删除父表中的行,如何实现呢? 当前使用的查询是

DELETE FROM TableName WHERE ColumnName= '89416'

查询显示错误:Cannot delete or update a parent row: a foreign key constraint fails

2 个答案:

答案 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 NULLNO ACTION即可。在使用之前,请查看类似问题的this answer,它解释了不同的行为。