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 :

pas de replace pour un index


Sujet :

SQL Oracle

  1. #1
    Membre confirmé

    Inscrit en
    Juin 2005
    Messages
    1 155
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 1 155
    Points : 475
    Points
    475
    Par défaut pas de replace pour un index
    bonjour les gens;
    voila il faut que je crée quelques index puis que je les détruise apres un certain traitement.
    Mais voila il est impossible de savoir si ces index existent deja ou pas (du moins je ne sais pas ou chercher pour voir s'il existent ou pas).
    Je peux à la rigeur chopper la première exception levée par un "drop index" sur un objet qui n'existe pas, ou sur un "create index" sur un index existant et traiter l'exception, mais pas pour le reste des ordres ddl, sauf si je mets une procedure par ordre create index ou drop index ce qui est tres lourd...
    comment puis-je remedier à ce problème ?
    merci pour toutes vos contributions

  2. #2
    Membre confirmé

    Inscrit en
    Juin 2005
    Messages
    1 155
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 1 155
    Points : 475
    Points
    475
    Par défaut
    hmm... je peux toujours faire un:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select *
    from all_indexs
    where table_name=
    c'est conseillé ?
    d'autres suggéstions ? je suis preneur

  3. #3
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Tu peux savoir après coup quand l'index a été créé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT object_name, created
    FROM user_objects
    WHERE object_type = 'INDEX'
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  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
    Exemple d'une solution en PL/SQL:

    • stocker la liste des indexes concernés dans une table
    • ouvrir un curseur implicite sur cette table
    • vérifier l'existence dans ALL_INDEXES de l'index
    • si l'index existe le supprimer
  5. remonter toutes les exceptions rencontrées

  • #5
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    moi je fais encore facilement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    begin execute immediate 'drop index i'; exception when others then null; end;
    /
    create index i on t(x);
    dans mes scripts ddl

  • #6
    Membre confirmé

    Inscrit en
    Juin 2005
    Messages
    1 155
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 1 155
    Points : 475
    Points
    475
    Par défaut
    begin execute immediate 'drop index i'; exception when others then null; end;
    /
    create index i on t(x);
    oui mais s'il y'a plusieurs "drop..."

  • #7
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    begin execute immediate 'drop index i1'; exception when others then null; end;
    /
    create index i1;
    begin execute immediate 'drop index i2'; exception when others then null; end;
    /
    create index i2;

  • + Répondre à la discussion
    Cette discussion est résolue.
    ActualitésF.A.Q ORACLETUTORIELS ORACLETUTORIELS SQLSCRIPTS SQLLIVRES ORACLEQUIZ

    Discussions similaires

    1. Erreur sur champ text pour un index Full-Text
      Par Steph82 dans le forum Outils
      Réponses: 5
      Dernier message: 06/01/2011, 14h08
    2. Réponses: 6
      Dernier message: 23/05/2005, 15h38
    3. Pas de DNS pour les clients
      Par M.Dlb dans le forum Réseau
      Réponses: 2
      Dernier message: 05/07/2004, 23h06

    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