IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

Oracle Discussion :

ORA-02449: clés uniques/primaires de la table référencées par des clés étrangères


Sujet :

Oracle

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2005
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 37
    Points : 26
    Points
    26
    Par défaut ORA-02449: clés uniques/primaires de la table référencées par des clés étrangères
    bonjour
    je suis dans oracle 8i sous Unix. Les données d'une table TOTO ont été modifié par erreur à partir d'une commande update. donc je voudrais supprimer cette table et la restaurer à partir d'un export que j'avais fait bien avant l'incident.
    pour ce faire j'ai voulu supprimer la table et la restaurer à partir de l'export disponible
    dans un premier temps j'ai desactiver toutes les contraintes de la tables
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alter table toto disable constraint nom_contrainte1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alter table toto disable constraint nom_contrainte2
    j'ai meme désactiver toutes les contraintes qui font reference à une colonne de la table TOTO
    mais j'ai ce message à la suppression de la table:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    drop table toto
    ORA-02449: clés uniques/primaires de la table référencées par des clés étrangères
    dans un second temps et pour contourner ce probleme j'ai fais un drop cascade constraint:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    drop table toto cascade constraint
    ça supprime la table et toutes les contraintes meme celle qui existent sur d'autres tables mais qui font reference à une colonne de la table toto.
    apres l'import je ne retrouve que les contraintes de la table toto sans les contraintes des autres tables qui font reference à une colonne de toto.
    Aidez moi à trouver la meilleur solution sans etre obligé de refaire un import complet.
    merci

  2. #2
    Membre averti

    Inscrit en
    Septembre 2003
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 425
    Points : 398
    Points
    398
    Par défaut
    Tu as pas une base de test identique avec les bonnes contraintes ?

    Car là comment récupérer les contraintes supprimée avec CASCADE CONSTRAINTS; je vois pas trop

    Désolé

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2005
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 37
    Points : 26
    Points
    26
    Par défaut
    Oui je pourrai retrouver les contraintes perdues mais le veritable probleme est d'élaborer une procedure simple pour restaurer la base en cas de perte accidentelle d'une seule table sans toucher veritablement les autres tables.

  4. #4
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    mais le veritable probleme est d'élaborer une procedure simple pour restaurer la base en cas de perte accidentelle d'une seule table sans toucher veritablement les autres tables.
    Ce que vous décrivez là est en général contradictoire avec l'utilisation d'une base de données qui gére des données cohérentes par rapport aux transactions validées dans la base: si vous ne restaurez qu'une table et que cette table a été mise à jour par des transactions qui ont aussi mis à jour d'autres tables vous avez comme résultat une base incohérente, à vos risques et périls ...

  5. #5
    Nouveau membre du Club
    Inscrit en
    Avril 2005
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 37
    Points : 26
    Points
    26
    Par défaut
    Je suis conscient du fait mais dans ce cas precis c'est une table qui est est chargé au plus 2 fois par année

  6. #6
    Membre éprouvé
    Inscrit en
    Avril 2006
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1 024
    Points : 1 294
    Points
    1 294
    Par défaut
    Il faut que tu désactive les contraintes des tables pointant sur TOTO et pas celles de TOTO....

    Après ne drope pas la table mais fait simplement un TRUNCATE, recharche ta table puis réactive les contraintes....

    Pour avoir la liste des contraintes des tables pointant sur toto tu peux faire la requête suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT table_name, constraint_name
      FROM user_constraints c1
     WHERE constraint_type = 'R'
       AND EXISTS (
              SELECT 1
                FROM user_constraints c2
               WHERE c1.r_constraint_name = c2.constraint_name
                 AND c2.table_name = 'TOTO')

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/04/2012, 23h53
  2. [MySQL] problème d'insertion dans des tables qui contiennent des clés étrangère
    Par shurik'n dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 13/04/2012, 21h32
  3. Tronquer une table liée par des clés étrangères
    Par hazem2410 dans le forum Oracle
    Réponses: 11
    Dernier message: 10/11/2010, 15h15
  4. modéliser une table mapping ayant des clés étrangères sur des vues
    Par touftouf57 dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 19/06/2010, 02h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo