Alterar a tabela do MySQL para adicionar restrição de chave estrangeira leva a erros
Por que estou recebendo erros ao tentar alterar uma tabela com uma restrição de chave estrangeira?
Detalhes:Eu tenho 1 mesa,HSTORY
que eu uso como uma tabela base para todas as outras tabelas de histórico específicas (ie.USER_HISTORY
, BROWSER_HISTORY
, PICTURE_HISTORY
...) Eu também incluí oPICTURE
eUSER
tabelas como eles são chamados também.
Tabela HISTÓRICO:
<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 USER: (caso alguém esteja curioso)
<code>CREATE TABLE IF NOT EXISTS USER ( ID INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (ID) ) engine=innodb; </code>
Tabela PICTURE: (caso alguém esteja curioso)
<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>
No entanto, quando faço isso, recebo:
<code>Key column 'FOREIGNID' doesn't exist in table </code>
Eu levo isso para significar que eu tenho que criar primeiroFOREIGNID
, mas em muitos dos exemplos em SO, o acima deve funcionar. Alguém sabe por que isso está ocorrendo?