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.