H2 base de données: référence à une table dans la racine de schéma à partir d'une contrainte de clé étrangère
Donné une table dans la racine du schéma:
CREATE TABLE user (
username VARCHAR(50),
password VARCHAR(50));
et une table dans Quiz
schéma:
CREATE TABLE Quiz.Results (
username VARCHAR(50),
points INT,
FOREIGN KEY (username) REFERENCES user(username));
Je ne suis pas en mesure de créer la clé étrangère, car la base de données des réclamations de la table user
n'existe pas réellement. Ni puis-je ajouter de la clé étrangère:
ALTER TABLE QUIZ.RESULTS
ADD FOREIGN KEY (username) REFERENCES user (username)
Les deux tables sont, bien sûr, stockées dans la même base de données.
Puisque c'est juste un morceau de devoirs, je suis plus qu'heureux de simplement ignorer l'ajout d'une clé étrangère. Mais je suis curieux de savoir si c'est effectivement une limitation dans H2, un bug, ou si tout fonctionne comme prévu.
Je peux en quelque sorte reportez-vous au tableau user
à l'extérieur de la quiz
schéma?
Vous devez vous connecter pour publier un commentaire.
Vous devez définir explicitement le nom de schéma si vous vous référez à une table dans un schéma différent. Le nom du schéma par défaut pour H2 est
public
. Exemple:Pour créer la contrainte de clé étrangère plus tard, utilisation:
FOREIGN KEY (username)
deux fois? Il semble que vous l'ajouter une fois dans la définition de la table pourQuiz.Results
, puis une seconde fois en votreALTER TABLE
déclaration.oui, très possible. Vous avez besoin d'utiliser les noms de Schéma pour les deux tableaux.
supposons que votre defualt nom de schéma est
DefaultSchema
alors votre requête sera