Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Oracle Discussion :

Activer et désactiver des contraintes d'une table


Sujet :

SQL Oracle

  1. #1
    Débutant  
    Activer et désactiver des contraintes d'une table
    Bonjour,

    J’ai essayé de désactiver et activer les contraintes de "table1" et sa table liée : "table2" :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    ALTER TABLE TABLE2
    DISABLE CONSTRAINT
    FK_REFERENCE_TABLE1


    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    ALTER TABLE TABLE1
    DISABLE CONSTRAINT
    PK_TABLE1


    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ALTER TABLE TABLE1
    ENABLE CONSTRAINT
    PK_TABLE1;
    COMMIT;


    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    ALTER TABLE TABLE2
    ENABLE CONSTRAINT
    FK_REFERENCE_TABLE1


    J'ai le message d'erreur suivante :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Erreur SQL : ORA-02298: impossible de valider (FK_REFERENCE_TABLE1) - clés parents introuvables
    02298. 00000 - "cannot validate (%s.%s) - parent keys not found"
    *Cause:    an alter table validating constraint failed because the table has
               child records.
    *Action:   Obvious



    Merci d'avance.

  2. #2
    Membre éclairé
    Si cela a un rapport avec ton autre sujet, tu n'as pas désactivé les contraintes pour y insérer des données orphelines dans table2?

    Si c'est le cas il faut que tu insères les données parentes dans table1.

  3. #3
    Expert éminent
    Bonjour, ca voudrait dire que la contrainte n'avait pas été validée avant (créée en novalidate).
    Par exemple:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    DEMO@atp1_tp> create table B as select rownum n from xmltable('1 to 4');
    Table B created.
    DEMO@atp1_tp> create table A as select rownum n from xmltable('1 to 2');
    Table A created.
    DEMO@atp1_tp> alter table A add constraint A primary key (n);
    Table A altered.
    DEMO@atp1_tp> alter table B add constraint BA foreign key (n) references A novalidate;
    Table B altered.
    DEMO@atp1_tp> alter table B disable constraint BA;
    Table B altered.
    DEMO@atp1_tp> alter table B enable constraint BA;
    ORA-02298: cannot validate (DEMO.BA) - parent keys not found
    Franck Pachot - dbi services - Consulting et Formation en Suisse et remote - fpa@dbi-services.com
    🗣 twitter: @FranckPachot - 📝 blog: blog.pachot.net - 🎧 podcast en français : https://anchor.fm/franckpachot

  4. #4
    Débutant  
    @vanagreg: Merci pour votre réponse, moi j'ai désactivé les contraintes pour vider la table pas pour insérer des informations.
    Mais je n'arrive pas à réactiver les contraintes.

    @pachot: Merci pour votre réponse, oui mais comment on peut résoudre ce genre d'erreur?

    Sachant quand j'ai essayè d'ajouter une contrainte clé étrangère à ma 2ème Table :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    ALTER table Table2
    ADD CONSTRAINT FK_Table2 FOREIGN KEY(Table2_ID) REFERENCES Table1 (Table1_ID);


    J'ai aussi l'erreur suivante :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Erreur SQL : ORA-02298: impossible de valider (FK_Table2) - clés parents introuvables
    02298. 00000 - "cannot validate (%s.%s) - parent keys not found"
    *Cause:    an alter table validating constraint failed because the table has
               child records.
    *Action:   Obvious

###raw>template_hook.ano_emploi###