Pokud uvedete sloupec id
při vytváření OTHERTABLE
pomocí dvojitých uvozovek ("id"
), pak jej musíte citovat také při vytváření omezení referenční integrity a při dotazování na data. V podstatě to musíte pokaždé citovat. Doporučuji ne citujte jej při vytváření tabulky, protože tak jej později nemusíte citovat. Citace znamená, že identifikátor rozlišuje malá a velká písmena. Pro MySQL to funguje, protože MySQL interně převádí identifikátory unquotes na malá písmena, na rozdíl od jiných databází. Ale pro H2 a další databáze to nefunguje.
Následující dva příkazy fungují pro MySQL i 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)
);
Pokud jste tedy dostali výjimku ve druhém příkazu, pravděpodobně jste použili jiný způsob vytvoření první tabulky (OTHERTABLE
). A tady je problém.
Pokud se příště zeptáte, zahrňte také create table
výpis z první tabulky a odešlete úplné chybová zpráva.