SQL문으로 테이블을 만들고 테이블 필드의 pk값과 fk값을 설정해주는 과정에서
1822 에러가 났다.
1822 에러가 나는 이유는 다른 테이블의 pk값을 fk로 받아올 때 참조하는 테이블에 pk값이 없는 경우에 발생했다.
erd로 db모델링 했을 때 모든 엔티티에 pk값을 지정했었는데..?
다시보니...
다른 테이블의 pk값을 fk로 받아올 컬럼과 참조테이블에 pk 컬럼명이 동일하지 않았다.
ALTER TABLE
studentADD CONSTRAINTFK_addclass_TO_student_2FOREIGN KEY (
PlanNum
)
REFERENCESaddclass(
PlanNum
);
이렇게 작성했더니 오류가 발생한 것이다.
ALTER TABLE
studentADD CONSTRAINTFK_plan_TO_student_1FOREIGN KEY (
PlanNum
)
REFERENCESplan(
PlanNum
);
이렇게 제대로 바꿨다.
처음코드 처럼 썼던 이유는 addclass 라는 테이블이 plan 테이블의 PlanNum
이라는 pk값을 fk로 받고있어서
Student 테이블에 addclass 테이블에 있는 PlanNum 을 fk값으로 받아올 수 있는줄
알았다... ㅎㅎ