Je crée une base de données qui tente d'accéder aux valeurs d'une clé étrangère. J'ai créé deux tables suivantes Ce sont les deux tables. mais il me donne l'erreur p> Ceci est la session que j'ai jusqu'à présent dans Oracle SQL Dev P> P> Composant CODE> et TYPECOMPONENT CODE>. composant code> est l'entité parent sur typecomponent code>, et j'essaie d'exécuter l'instruction insertion suivante: p>
4 Réponses :
Veuillez afficher votre session SQLPlus entière afin que l'erreur soit facilement reproductible.
On dirait que l'insert dans la table enfant est en cours de faire avant l'insertion dans la table des parents qui provoque cette erreur. P>
Modifiez l'ordre des insertions et retentissez votre code. P>
SQL> CREATE TABLE TypeComponent(
2 TypeComponentID varchar2(9) PRIMARY KEY,
3 Type_Description varchar2(30)
4 CONSTRAINT Type_Description CHECK(Type_Description IN('Strap', 'Buckle', 'Stud')) NOT NULL
5 )
6 ;
Table created.
SQL> CREATE TABLE Component(
2 ComponentID varchar2(9) PRIMARY KEY,
3 TypeID varchar2(9) REFERENCES TypeComponent(TypeComponentID)
4 )
5 ;
Table created.
SQL> INSERT INTO Component VALUES(192359823,785404309);
INSERT INTO Component VALUES(192359823,785404309)
*
ERROR at line 1:
ORA-02291: integrity constraint (COAMGR.SYS_C002513823) violated - parent key
not found
SQL> INSERT INTO TypeComponent VALUES(785404309, 'Strap');
1 row created.
SQL> INSERT INTO Component VALUES(192359823,785404309);
1 row created.
SQL> commit;
Commit complete.
in , puis vous continuez avec p> si vous avez exécuté ceci Tout d'abord, alors Oracle lancera la contrainte d'intégrité code> car vous essayez d'insérer dans Ceci est un problème car vous avez mentionné que composant code> table que vous avez composant code> Tableau une valeur qui n'est pas présente dans TypeComponent code> Tableau. p> typeid code> est une clé étrangère, c'est-à-dire la valeur de typeid code> doit être présent dans Typecomponent code> avant d'insérer dans composant code> p> p>
Il convient de souligner une règle générale ici: lorsque vous remplissez des données, peuplez les données référence i> (donc composant type i> est des données de référence), puis des données principales.
Essayez d'insérer dans votre table code> Tableau code> d'abord, puis insérez dans votre composant Selon l'erreur: p>
Cela signifie qu'il n'y a pas de clé correspondante dans votre table référencée. P>
edit # 1 fort> p>
Pour vos informations aimables, voici un site où vous pouvez obtenir de l'aide avec toutes les codes d'erreur Oracle. P>
Voici la page d'accueil de ce site: où vous pouvez remplacer le code d'erreur dans l'URL en fonction du code d'erreur que vous obtenez, et vous accéderez à la page pour cette erreur. P> code> Table. P>
Cause: strong> Une valeur de clé étrangère n'a aucune valeur de clé primaire correspondante.
http: // [ORA-02291] .ora-code.com / code> p>
Vous dites donc que je devrais laisser tomber les deux tables, puis créer la table de caractères de caractères de caractères de caractères d'abord, puis insérez l'instruction dans la table des composants?
Idéalement, sachez ce qui est dépendant et ce qui n'est pas. Dans votre scénario, composant code> dépend de typecomponent code>. J'aime penser à cela comme un objet atomique. Cela peut exister seul. D'autre part, composant code> ne peut pas exister sans typecomponent code>, car son champ code> TYPEID code> Références de la clé primaire du Typecomponent code> table. Par conséquent, lors de l'insertion dans code> composant code>, le moteur de base de données vérifie la référence que vous lui donnez, la valeur du typecomponent.typecomponentid code>, et comme cela ne peut pas le trouver, rejette l'insertion, sinon vous auriez une préoccupation d'intégrité des données.
Je ne pense pas que l'ordre de création de table est un problème ici, car vous avez dit qu'ils existent tous les deux dans votre base de données. Mis à part, il aurait peut-être rendu évident si vous auriez créé le tableau typecomponent code> avant le composant code> code>, une ligne doit exister dans typecomponent code> Afin d'insérer dans composant code>.
Cette erreur est présente parfois avec la clé référencée (clé étrangère dans mon cas) Cela a des erreurs. Veuillez recréer la clé référencée dans le tableau. P>
Pouvez-vous s'il vous plaît poster votre session entière et reformater votre message un peu?
Chaque fois que vous entrez des instructions SQL et des journaux d'erreur, veuillez sélectionner les instructions et cliquer sur le code (c.-à-d. Icône avec
1010 code> afin qu'il soit lisible. Merci.