Zmiana tabeli MySQL w celu dodania ograniczenia klucza obcego prowadzi do błędów
Pytanie:
Dlaczego otrzymuję błędy podczas próby zmiany tabeli z ograniczeniem klucza obcego?
Detale:Mam 1 stół,HSTORY
które używam jako tabeli bazowej dla wszystkich innych specyficznych tabel historii (tj.USER_HISTORY
, BROWSER_HISTORY
, PICTURE_HISTORY
...). Włączyłem równieżPICTURE
iUSER
stoliki, jak również się nazywają.
Tabela HISTORIA:
<code>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; </code>
Tabela użytkownika: (na wypadek gdyby ktoś był ciekawy)
<code>CREATE TABLE IF NOT EXISTS USER ( ID INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (ID) ) engine=innodb; </code>
Tabela OBRAZÓW: (na wypadek gdyby ktoś był ciekawy)
<code>CREATE TABLE IF NOT EXISTS PICTURE ( ID INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (ID) ) engine=innodb; </code>
Tabela PICTURE_HISTORY:
<code>CREATE TABLE IF NOT EXISTS PICTURE_HISTORY LIKE HISTORY; ALTER TABLE PICTURE_HISTORY ADD FOREIGN KEY (FOREIGNID) REFERENCES PICTURE(ID); </code>
Jednak kiedy to robię, dostaję:
<code>Key column 'FOREIGNID' doesn't exist in table </code>
To oznacza, że muszę najpierw stworzyćFOREIGNID
, ale w wielu przykładach na SO powyższe powinno działać. Ktoś wie, dlaczego tak się dzieje?