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 Firebird Discussion :

Cannot deactivate index used by a PRIMARY/UNIQUE constraint


Sujet :

SQL Firebird

  1. #1
    Membre éclairé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    Mai 2002
    Messages
    1 271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 271
    Points : 681
    Points
    681
    Par défaut Cannot deactivate index used by a PRIMARY/UNIQUE constraint
    Bonjour,

    Lorsque je tente de supprimer les données de toutes les tables de la BDD j'obtient le message suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Project raised exception class EUIBerror with message action canceled by trigger(3)
    to preserve data integrity cannot deactivate index used by a PRIMARY/UNIQUE constraint
    at procedure INIT_MODULE

    1) Les données sont supprimées dans la procedure stockée INIT_MODULE et avant d'entamer la suppression je désactive les index

    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
    21
    22
    23
     
     
    ............désactivation des index...................
     
     UPDATE 
        RDB$INDICES
       SET
        RDB$INDEX_INACTIVE = 1
        WHERE (RDB$SYSTEM_FLAG IS NULL OR RDB$SYSTEM_FLAG = 0);
     
    .....début de la suppression....................................................
     
    DELETE FROM TABLE1
    DELETE FROM TABLE2
    DELETE FROM TABLE (n)
     
    ............réactivation des index...................
     
    UPDATE 
        RDB$INDICES
       SET
        RDB$INDEX_INACTIVE = 0
        WHERE (RDB$SYSTEM_FLAG IS NULL OR RDB$SYSTEM_FLAG = 0);

    2)- Comme je n'arrive pas à désactiver les triggers dans la PS avant celle des index je le fais depuis l'application avec la propriété DeactiveAllTriggers du TUIBDatabase. Désactiver les triggers dans la PS me renvoi le message suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    UPDATE operation is not allowed for system table RDB$TRIGGERS.
    Code de désactivation des triggers:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    UPDATE 
        RDB$TRIGGERS 
       SET
        RDB$TRIGGER_INACTIVE = 1
       WHERE
        RDB$TRIGGER_SOURCE IS NOT NULL 
        AND ((RDB$SYSTEM_FLAG = 0) 
        OR (RDB$SYSTEM_FLAG IS NULL)) ;

    Pour les triggers ca ne pose plus de problème puisque ca marche depuis l'application mon problème c'est les index qui ne ce désactivent pas pour pouvoir executer les suppressions.

    J'utilise FB3
    Auriez-vous SVP une solution ?
    En vous remerciant.
    Si quelqu'un t'a offensé, ne cherche pas à te venger; assieds-toi au bord de la rivière et, bientôt, tu verras passer son cadavre.

    Lao Tseu - un sage chinois

    Celui qui lutte contre les monstres doit veiller à ne pas le devenir lui-même.
    Et quand ton regard pénètre longtemps au fond d'un abîme, l'abîme, lui aussi, pénètre en toi.

    Friedrich Nietzsche - Par délà le bien et le mal

  2. #2
    Membre émérite Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Points : 2 286
    Points
    2 286
    Par défaut
    Pas de possibilités de faire des delete dans le bon ordre ?

    Ex : table commande (id) et contrainte sur une table détail_commande (id,id_cde) ... id_cde doit exister ...
    =>
    Je veux supprimer une commande, je commence par détruire les lignes détails puis la commande
    Je veux tout supprimer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    delete from detail_commande
    puis

    Donc pas besoin de virer des contraintes d'intégrité, juste une question de respect de ces contraintes ...
    Emérite, émérite je ne pense pas ... plutôt dans le développement depuis FORT FORT longtemps, c'est mon job, ça oui
    A part ça ... Il ne pleut jamais en Moselle !

  3. #3
    Membre éclairé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    Mai 2002
    Messages
    1 271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 271
    Points : 681
    Points
    681
    Par défaut
    Citation Envoyé par vttman
    Pas de possibilités de faire des delete dans le bon ordre ?
    Si, et c'est la méthode la plus simple et je l'ai mise de côté au cas je ne trouverais pas de solution à mon problème.
    Le problème est que j'ai 130 tables donc je ne peux pas me les taper à la main. Comme ces tables sont dans une autre table avec leurs nom de module associé (STOCK,ACHAT, etc...) ainsi que le nom du générateur associé à chaque table alors je parcours cette table en quelque lignes pour faire les delete tout est nickel sauf pour cette désactivation d'index.
    Si quelqu'un t'a offensé, ne cherche pas à te venger; assieds-toi au bord de la rivière et, bientôt, tu verras passer son cadavre.

    Lao Tseu - un sage chinois

    Celui qui lutte contre les monstres doit veiller à ne pas le devenir lui-même.
    Et quand ton regard pénètre longtemps au fond d'un abîme, l'abîme, lui aussi, pénètre en toi.

    Friedrich Nietzsche - Par délà le bien et le mal

  4. #4
    Membre éclairé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    Mai 2002
    Messages
    1 271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 271
    Points : 681
    Points
    681
    Par défaut
    OK j'ai trouver une astuce avec une petite gymnastique
    Merci vttman
    Si quelqu'un t'a offensé, ne cherche pas à te venger; assieds-toi au bord de la rivière et, bientôt, tu verras passer son cadavre.

    Lao Tseu - un sage chinois

    Celui qui lutte contre les monstres doit veiller à ne pas le devenir lui-même.
    Et quand ton regard pénètre longtemps au fond d'un abîme, l'abîme, lui aussi, pénètre en toi.

    Friedrich Nietzsche - Par délà le bien et le mal

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 11
    Dernier message: 09/08/2012, 10h02
  2. Réponses: 8
    Dernier message: 02/11/2010, 11h28
  3. Problème Index: Using Filesort
    Par sonnystyle dans le forum Requêtes
    Réponses: 2
    Dernier message: 08/01/2010, 16h07
  4. INDEX utilisé par une Primary Key
    Par Wurlitzer dans le forum Oracle
    Réponses: 2
    Dernier message: 29/06/2006, 11h42

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