質問:
外部キー制約を使用してテーブルを変更しようとすると、エラーが発生するのはなぜですか?
詳細:
他のすべての特定の履歴テーブル(つまり、、、...)HSTORY
のベーステーブルとして使用するテーブルが1つあります。と呼ばれるテーブルも含めました。USER_HISTORY
BROWSER_HISTORY
PICTURE_HISTORY
PICTURE
USER
履歴テーブル:
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の多くの例では、上記が機能するはずです。なぜこれが起こっているのか誰もが知っていますか?