我有父表中有外国三个外键,但我想单独删除父表中的行,如何实现它? 是我使用的查询是目前如何从父表中删除一行而不从Child表中删除一行?
DELETE FROM TableName WHERE ColumnName= '89416'
查询显示错误:Cannot delete or update a parent row: a foreign key constraint fails
我有父表中有外国三个外键,但我想单独删除父表中的行,如何实现它? 是我使用的查询是目前如何从父表中删除一行而不从Child表中删除一行?
DELETE FROM TableName WHERE ColumnName= '89416'
查询显示错误:Cannot delete or update a parent row: a foreign key constraint fails
你应该返工您的要求,我们维持父子关系表的关系,因为我们需要连接的数据。
但无论如何,如果你想删除,那么一个选项是有(禁用约束,然后启用后删除)。但同样会出现问题。
变化通过如下图所示的样品中创建它的子表:
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上的一个类似的问题,它解释了不同的行为。
不要这样做!您可以暂时放弃外键并从父行中删除,但这会创建孤立记录,这是一件坏事。 –
那么,这就是为什么它被称为参考完整性,它用于防止这种愚蠢的事情:-) – dnoeth
我想你可以SET foreign_key_checks = 0; – wrecklez