dato un tavolo nello schema radice:database di H2: facendo riferimento a una tabella nello schema radice da un vincolo di chiave esterna
CREATE TABLE user (
username VARCHAR(50),
password VARCHAR(50));
e un tavolo in Quiz
schema:
CREATE TABLE Quiz.Results (
username VARCHAR(50),
points INT,
FOREIGN KEY (username) REFERENCES user(username));
non riesco per creare effettivamente la chiave esterna, in quanto il database afferma che la tabella user
non esiste realmente. Né posso aggiungere successivamente la chiave esterna:
ALTER TABLE QUIZ.RESULTS
ADD FOREIGN KEY (username) REFERENCES user (username)
Entrambe le tabelle sono, ovviamente, memorizzate nello stesso database.
Dato che questo è solo un pezzo di compiti a casa, sono più che felice di saltare semplicemente l'aggiunta di una chiave esterna. Ma sono curioso di sapere se questa è davvero una limitazione in H2, un bug o se funziona come previsto.
Posso in qualche modo fare riferimento alla tabella user
all'esterno dello schema quiz
?
Conoscere lo schema predefinito (quello che ho chiamato il 'schema di root') nome aiutato. Grazie! –
Posso chiederti perché stai aggiungendo 'FOREIGN KEY (username)' due volte? Sembra che tu lo aggiunga una volta nella definizione della tabella per 'Quiz.Results', quindi una seconda volta nella tua istruzione' ALTER TABLE'. –
@CraigOtis Hai ragione, dovrebbe essere l'uno o l'altro. Ho cambiato la risposta. –