본문 바로가기
MySql

MySQL 외래 키 제약 조건을 추가하기 위해 MySQL 테이블을 변경하면 오류가 발생합니다.

by 베이스 공부 2021. 2. 13.
반응형

외래 키 제약 조건이있는 테이블을 변경하려고 할 때 왜 오류가 발생합니까?

다른 모든 특정 기록 테이블 (예 : USER_HISTORY , BROWSER_HISTORY , )의 기본 테이블로 사용하는 HSTORY 테이블이 1 개 있습니다 PICTURE_HISTORY ...). PICTURE USER 테이블도 호출 될 때 포함했습니다.

HISTORY 표 :

CREATE TABLE IF NOT EXISTS HISTORY
(
   ID        INT NOT NULL AUTO_INCREMENT,
   VIEWERID  INT NOT NULL ,
   VIEWDATE  TIMESTAMP NOT NULL DEFAULT NOW(),

   PRIMARY KEY (ID),
   FOREIGN KEY (VIEWERID) REFERENCES USER(ID)
)
engine=innodb;

USER 테이블 : (호기심이있는 경우)

CREATE TABLE IF NOT EXISTS USER
(
   ID        INT NOT NULL AUTO_INCREMENT,

   PRIMARY KEY (ID)
)
engine=innodb;

PICTURE 테이블 : (호기심이 많은 경우)

CREATE TABLE IF NOT EXISTS PICTURE
(
   ID        INT NOT NULL AUTO_INCREMENT,

   PRIMARY KEY (ID)
)
engine=innodb;

PICTURE_HISTORY 테이블 :

CREATE TABLE IF NOT EXISTS PICTURE_HISTORY LIKE HISTORY;

ALTER TABLE PICTURE_HISTORY
ADD FOREIGN KEY (FOREIGNID) REFERENCES PICTURE(ID);

그러나 이렇게하면 다음과 같은 결과가 나타납니다.

Key column 'FOREIGNID' doesn't exist in table

이것은 먼저 FOREIGNID 를 만들어야한다는 것을 의미하지만 SO에 대한 많은 예제에서 위의 내용이 작동합니다. 왜 이런 일이 발생하는지 아는 사람이 있습니까?

 

해결 방법

 


ALTER TABLE PICTURE_HISTORY
ADD COLUMN FOREIGNID INT NOT NULL;

ALTER TABLE PICTURE_HISTORY
ADD FOREIGN KEY (FOREIGNID) REFERENCES PICTURE(ID);

 

참조 페이지 https://stackoverflow.com/questions/10369271

 

 

반응형

댓글