데이터베이스에 테이블이 2 개 있습니다. 2013 아무것도를 판매하지 않았다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;
내가 매니저를 삭제하기 위해 필요한, 내가 해낸 : 그것은 잘 작동
DELETE managers from managers join sell on sell.idManagers=managers.idManagers where NOT
YEAR(sell.sellDate) = 2013; SET FOREIGN_KEY_CHECKS=0
,하지만 난 때문에, 외부 키 체크를 해제했다 상위 행을 삭제하거나 업데이트 할 수 없다는 오류가 발생했습니다. 외화 수표를 사용하지 않고이 작업을 수행 할 수있는 방법이 있습니까? 당신의 외래 키 제약 조건을 'DELETE CASCADE ON'
추가 :
은 먼저 자식 데이터를 삭제하고 삭제하기 전에 트리거를 작성하고 실행하거나 제한 조건에 delete cascade 옵션을 사용하십시오. –
그래서 기존 키를 삭제하고 필요한 것을 삭제하고 새로운 외래 키를 추가해야합니다 삭제 후? –