我在我的数据库中有2个表。SQL DELETE警告
CREATE TABLE `Managers`(
`idManagers` INT NOT NULL AUTO_INCREMENT,
`fullName` VARCHAR(100),
`address` VARCHAR(100),
`worksSince` DATE,
`salary` DOUBLE,
PRIMARY KEY (`idManagers`)) ENGINE = InnoDB;
CREATE TABLE `Sell` (
`idSell` INT NOT NULL AUTO_INCREMENT,
`idManagers` INT,
`item` VARCHAR(100),
`price` DOUBLE,
`sellDate` DATE,
PRIMARY KEY (`idSell`),
INDEX `s1_idx` (`idManagers` ASC),
CONSTRAINT `s1`
FOREIGN KEY (`idManagers`)
REFERENCES `Managers` (`idManagers`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
我需要删除的经理,那些没有在2013年 卖什么,我想出了:
DELETE managers from managers join sell on sell.idManagers=managers.idManagers where NOT
YEAR(sell.sellDate) = 2013; SET FOREIGN_KEY_CHECKS=0
它工作正常,但我不得不禁用外键检查,因为我有一个错误,我无法删除或更新父行。我想知道,有没有办法做到这一点,而不禁用外国检查?
可能是写一个触发之前执行它删除,并先删除子数据,或使用删除级联选项来约束 – 2014-10-31 10:15:02
所以我要删除现有键,删除我需要什么,并添加一个新的外键删除后? – 2014-10-31 10:20:45