-
[mysql]외래키 제약조건 변경데이터베이스 2020. 12. 18. 11:15
외래키로 참조당하고있는 데이터를 삭제하면 에러가 발생한다.
10:07:39 DELETE from product where product_code = '002' Error Code: 1451. Cannot delete or update a parent row: a foreign key constraint fails (`bizcos`.`recipe_mng`, CONSTRAINT `product_code` FOREIGN KEY (`product_code`) REFERENCES `product` (`product_code`)) 0.016 sec
이 문제를 해결하기 위해 참조 당하는 데이터를 삭제하면 참조 하고있는 데이터도 자동으로 같이 삭제해주는 옵션을 추가한다.
이 설정을 위해 우선 테이블의 제약조건이름을 알아야한다. 다음 명령어를 통해 알 수 있다.
select * from information_schema.table_constraints where table_name = '테이블 이름';
그럼이제 테이블의 제약조건을 변경해주어야하는데 수정이안돼서 삭제하고 다시 생성한다.
-- 외래키 제약조건 추가 ALTER TABLE 테이블 이름 DROP FOREIGN KEY `외래키 이름`; ALTER TABLE 테이블 이름 ADD CONSTRAINT 제약조건 이름 FOREIGN KEY (외래키) REFERENCES product(외래키가 참조하는 키) ON DELETE CASCADE ON UPDATE CASCADE --update도 추가로 가능하게 해줌
이제 삭제, 업데이트시 해당 데이터를 참조하고있던 데이터도 같이 사라지는 것을 볼 수 있다.