Als u de kolom id
. citeert bij het maken van OTHERTABLE
dubbele aanhalingstekens gebruiken ("id"
), dan moet je het ook citeren bij het maken van de referentiële integriteitsbeperking en bij het opvragen van gegevens. In principe moet je het elke keer citeren. Ik stel voor om niet citeer het bij het maken van de tabel, want zo hoef je het later niet te citeren. Citeren betekent dat de identifier hoofdlettergevoelig is. Voor MySQL werkt het omdat MySQL intern identifiers zonder aanhalingstekens converteert naar kleine letters, in tegenstelling tot andere databases. Maar voor H2 en andere databases werkt het niet.
De volgende twee instructies werken voor zowel MySQL als 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)
);
Dus als je een uitzondering kreeg in de tweede instructie, heb je waarschijnlijk een andere manier gebruikt om de eerste tabel te maken (OTHERTABLE
). En hier zit het probleem.
Als u de volgende keer een vraag stelt, voeg dan ook de create table
toe statement van de eerste tabel, en post de complete foutmelding.