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

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : mai 2002
    Messages : 1 150
    Points : 577
    Points
    577

    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.
    Le Savoir c'est le Pouvoir !
    S.Freud

  2. #2
    Membre expérimenté Avatar de vttman
    Homme Profil pro
    Mainframe et le WE (CSS, PHP, JS et MYSQL)
    Inscrit en
    décembre 2002
    Messages
    805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Mainframe et le WE (CSS, PHP, JS et MYSQL)
    Secteur : Industrie

    Informations forums :
    Inscription : décembre 2002
    Messages : 805
    Points : 1 529
    Points
    1 529

    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 ...
    Je suis sympa comme tout Mosellan mais ...
    ... (m')aider ou (me) mettre sur la voie c'est une chose
    ... tout (me) faire de A à Z, c'est pas ma conception du rôle d'un forum X ou Y
    Si vous n'êtes pas satisfait de mes réponses, n'hésitez pas à me le faire savoir Merci !

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

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : mai 2002
    Messages : 1 150
    Points : 577
    Points
    577

    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.
    Le Savoir c'est le Pouvoir !
    S.Freud

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

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : mai 2002
    Messages : 1 150
    Points : 577
    Points
    577

    Par défaut

    OK j'ai trouver une astuce avec une petite gymnastique
    Merci vttman
    Le Savoir c'est le Pouvoir !
    S.Freud

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