Se você citar a coluna
id
ao criar OTHERTABLE
usando aspas duplas ("id"
), então você também deve citá-lo ao criar a restrição de integridade referencial e ao consultar dados. Basicamente, você tem que citá-lo cada vez. Sugiro não citá-lo ao criar a tabela, porque assim você não precisa citá-lo mais tarde. Aspas significam que o identificador diferencia maiúsculas de minúsculas. Para o MySQL, funciona porque internamente o MySQL converte identificadores sem aspas em letras minúsculas, ao contrário de outros bancos de dados. Mas para H2 e outros bancos de dados não funciona. As duas instruções a seguir funcionam para MySQL e H2:
CREATE TABLE IF NOT EXISTS OTHERTABLE (
id BIGINT AUTO_INCREMENT NOT NULL
);
CREATE TABLE IF NOT EXISTS SOMETABLE (
id BIGINT AUTO_INCREMENT NOT NULL,
FOREIGN KEY (id) REFERENCES OTHERTABLE(id)
);
Portanto, se você recebeu uma exceção na segunda instrução, provavelmente usou uma maneira diferente de criar a primeira tabela (
OTHERTABLE
). E é aqui que está o problema. Da próxima vez, se você fizer uma pergunta, inclua também o
create table
declaração da primeira tabela e poste o completo mensagem de erro.