我在我的數據庫中有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