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

SQL Oracle Discussion :

[Oracle] Problemes de doublons


Sujet :

SQL Oracle

  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 36
    Par défaut [Oracle] Problemes de doublons
    Bonjour a tous.

    Tout d'abord, je suis desolé mais j'ai aussi laissé ce message sur le forum PL/SQL car je ne savais pas où le mettre pour avoir plus de chance d'avoir une réponse.


    Je debute dans les bases de données et encore plus dans Oracle.
    Au boulot, on a une table Document qui contient entre autre une colonne ID_DOCUMENT qui est unique et sans doublons.

    On créé une table DOCUMENT_SAV qui contient deux colonnes:
    ID_DOCUMENT qui est une copie de la colonne de la table DOCUMENT
    ID_INDEXE qui contient tous les nombres de 2000 à x. Cette colonne est aussi unique et sans doublons

    en fait, le but est de réindexer les ID_DOCUMENT dans la table DOCUMENT.

    Ensuite, je créé une table DOCUMENT_ALEX qui est une copie de la table DOCUMENT.
    Et je fait ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    declare
      cursor c1 IS 
         SELECT   INDEX_DOCUMENT,ID_DOCUMENT
           FROM   DOCUMENTS_SAV
           ORDER BY ID_DOCUMENT;
    c11 c1%rowtype;
     
    begin
      open c1;
        loop
        fetch c1 INTO c11;
        exit when c1%notfound;
           begin
             UPDATE DOCUMENTS_ALEX
             SET ID_DOCUMENT = c11.INDEX_DOCUMENT
             WHERE ID_DOCUMENT = c11.ID_DOCUMENT;
           end;
        end loop;
      close c1;
    end;
    Normalement, le curseur parcours la table DOCUMENT_SAV (qui, je le rappelle n'a aucun doublons) et réindexe les ID_DOCUMENT de la table DOCUMENT_ALEX.

    Le probleme, c'est que ma table DOCUMENT_ALEX a des doublons elle... Je ne comprend pas trop comment fonctionne les curseurs mais normalement, ils sont censé parcourir ma table DOCUMENT_SAV sans doublons et donc etre unique...

    Quelqu'un aurait il une idée parce que c'est malheureusement urgent et que je comprend pas!

    Merci beaucoup a vous

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Pourquoi vouloir réindexer une PK technique ?

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 36
    Par défaut
    Ben, deja, c'est une demande de mes chefs et j'ai pas trop le choix!

    En fait, dans la table Document, il y a plein de trous dans la colonne ID_DOCUMENT et l'indice va jusqu'a 31000 et des poussieres.
    Une fois réindéxé, il n'y a plus de trous (tous les index sont contigues) et l'indice va jusqu'a 3500 environ. D'ou un gain de place (en terme d'indice) et une defragmentation de la table.

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Faites un bête update :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE DOCUMENTS_ALEX
    SET ID_DOCUMENT = rownum
    Mais pour moi ça demeure une erreur de penser ainsi, ou alors il y a une partie applicative que je n'ai pas saisie.

Discussions similaires

  1. [C#] [Oracle] Problème de chaine de connexion
    Par didoboy dans le forum ASP.NET
    Réponses: 9
    Dernier message: 08/01/2005, 11h32
  2. Problème de doublon
    Par Oberown dans le forum Schéma
    Réponses: 1
    Dernier message: 09/09/2004, 16h06
  3. Probleme de doublons...
    Par kv000 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 18/08/2004, 10h25
  4. [C#] [Oracle] Probleme avec une procedure stockée
    Par sronin1 dans le forum Accès aux données
    Réponses: 4
    Dernier message: 28/05/2004, 19h04
  5. Réponses: 3
    Dernier message: 17/05/2004, 17h28

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