Modification des scripts d'installation qui créent des déclencheurs
Si votre application comporte un déclencheur BEFORE INSERT sur une table source et que vous insérez des données de cette table source dans la nouvelle table correspondante, vous devez décider si vous souhaitez que le déclencheur s'exécute avant que chaque instruction INSERT du script d'installation insère des données dans la nouvelle table.
Par exemple, NEW_EVALUATION_TRIGGER (créé dans "Tutoriel : Création d'un déclencheur générant une clé primaire pour une rangée avant son insertion) se déclenche avant qu'une rangée ne soit insérée dans la table EVALUATIONS. Le déclencheur génère le numéro unique de la clé primaire de cet enregistrement, à l'aide de EVALUATIONS_SEQUENCE.
La table source EVALUATIONS est alimentée avec des clés primaires. Si vous ne voulez pas que le script d'installation insère de nouvelles valeurs de clé primaire dans la nouvelle table EVALUATIONS, vous devez modifier l'instruction CREATE TRIGGER dans le script d'installation comme indiqué :
CREATE OR REPLACE
TRIGGER NEW_EVALUATION_TRIGGER
BEFORE INSERT ON EVALUATIONS
FOR EACH ROW
BEGIN
IF :NEW.evaluation_id IS NULL THEN
:NEW.evaluation_id := evaluations_sequence.NEXTVAL
END IF;
END;
De plus, si la valeur courante de la séquence n'est pas supérieure à la valeur maximale de la colonne de clé primaire, vous devez la rendre supérieure.
Vous pouvez modifier le script d'installation dans la feuille de calcul ou dans n'importe quel éditeur de texte.
Pour modifier le script d'installation, procédez comme suit :
-
Modifiez la définition du déclencheur dans le fichier source, puis recréez le script d'installation.
Pour plus d'informations sur la modification des déclencheurs, voir "Modification des déclencheurs".
-
Désactivez le déclencheur avant d'exécuter le script d'installation des données, puis réactivez-le par la suite.
Pour plus d'informations sur la désactivation et l'activation des déclencheurs, voir "Désactivation et activation des déclencheurs".
Voir aussi : "Création de déclencheurs"