ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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도 추가로 가능하게 해줌

    이제 삭제, 업데이트시 해당 데이터를 참조하고있던 데이터도 같이 사라지는 것을 볼 수 있다. 

Designed by Tistory.