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

PL/SQL Oracle Discussion :

pb déclenchement trigger


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 33
    Par défaut pb déclenchement trigger
    Bonjour à tous,
    Je m'en remet à vous pour si possible m'aider. Voila j'ai créer qlq triggers il y à de ça un petit moment et je me suis rendu compte il y a peu de temps que certaine fois ils ne se déclenchaient pas.

    je vous met le code ici:
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
     
     
    CREATE OR REPLACE TRIGGER "NEGOCE"."HYB_CMD" 
     
    AFTER 
     
    insert or update or delete on NEGOCE.SORDER 
     
    for each row  
     
    DECLARE
     
     
    var_table_modif VARCHAR2(20);
    var_type_modif VARCHAR2(20);
    var_old_key VARCHAR2(20);
    var_new_key VARCHAR2(20);
    var_foreign_key VARCHAR2(20);
    var_time_log VARCHAR2(20);
    var_param_log VARCHAR2(20);
     
     
     
    begin
     
     
    var_table_modif:= 'SORDER';
    var_time_log:= TO_CHAR(SYSDATE, 'YYYYMMDDHH24MISS');
     
     
     
    IF INSERTING THEN
     
     
    var_type_modif:= 'INSERT';
    var_new_key:= :new.SOHNUM_0;
    var_old_key:= 'null';
    var_foreign_key:= 'null';
    var_param_log:= :new.DEMDLVDAT_0;
     
     
     
    EXECUTE IMMEDIATE
     
    '
     
    insert into NEGOCE.XLOGACT 
     
    (NUMLOG_0,TABLELOG_0,TYPEMOD_0,NEWKEY_0,OLDKEY_0,TIMELOG_0,FOREIGNKEY_0,PARAM_0) 
     
    values 
     
    ('' '',''' || var_table_modif || ''',''' || var_type_modif || ''',''' || var_new_key || ''',''' || var_old_key || ''',''' || var_time_log || ''',''' || var_foreign_key || ''',''' || var_param_log || ''')
     
    ';
     
     
    END IF;
     
     
    IF UPDATING THEN
     
    var_type_modif:= 'UPDATE';
    var_new_key:= :new.SOHNUM_0;
    var_old_key:= :old.SOHNUM_0;
    var_foreign_key:= 'null';
    var_param_log:= :old.DEMDLVDAT_0;
     
     
    EXECUTE IMMEDIATE
     
    '
     
    insert into NEGOCE.XLOGACT 
     
    (NUMLOG_0,TABLELOG_0,TYPEMOD_0,NEWKEY_0,OLDKEY_0,TIMELOG_0,FOREIGNKEY_0,PARAM_0) 
     
    values 
     
    ('' '',''' || var_table_modif || ''',''' || var_type_modif || ''',''' || var_new_key || ''',''' || var_old_key || ''',''' || var_time_log || ''',''' || var_foreign_key || ''',''' || var_param_log || ''')
     
    ';
     
     
     
    END IF;
     
    IF DELETING THEN
     
     
    var_type_modif:= 'DELETE';
    var_new_key:= 'null';
    var_old_key:= :old.SOHNUM_0;
    var_foreign_key:= 'null';
     
    var_param_log:= :old.DEMDLVDAT_0;
     
     
     
    EXECUTE IMMEDIATE
     
    '
     
    insert into NEGOCE.XLOGACT 
     
    (NUMLOG_0,TABLELOG_0,TYPEMOD_0,NEWKEY_0,OLDKEY_0,TIMELOG_0,FOREIGNKEY_0,PARAM_0) 
     
    values 
     
    ('' '',''' || var_table_modif || ''',''' || var_type_modif || ''',''' || var_new_key || ''',''' || var_old_key || ''',''' || var_time_log || ''',''' || var_foreign_key || ''',''' || var_param_log || ''')
     
    ';
     
     
    END IF;
    end;
    ALTER TRIGGER "NEGOCE"."HYB_CMD" ENABLE
    Le code fonctionne ça c'est sûr compilation ok, déclenchement ok sur tous les types de modifs insert,update et delete mais il se trouve que quand je regarde ma table XLOGACT il y à certaines fois ou le trigger ne se declenche pas ou peut être que l'insertion ne se fait pas pas. Je précise qu'il y à en tous 4 trigger sur différente table qui alimente tous cette table XLOGACT.

    Alors voila je n'ai pas trop de piste pb d'accés sur les insertion dans ma table ou autre je ne vois pas .
    Merci pour votre aide. :?

  2. #2
    McM
    McM est déconnecté
    Expert confirmé

    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
    Billets dans le blog
    4
    Par défaut
    Bonjour,

    J'ai un peu simplifié le code (pourquoi utilises-tu un execute immediate ?)
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    CREATE OR REPLACE TRIGGER "NEGOCE"."HYB_CMD"  
    AFTER  
    INSERT OR UPDATE OR DELETE ON NEGOCE.SORDER 
    FOR EACH ROW  
    DECLARE
     
      var_table_modif VARCHAR2(20);
      var_type_modif 	VARCHAR2(20);
      var_old_key 		VARCHAR2(20);
      var_new_key 		VARCHAR2(20);
      var_foreign_key VARCHAR2(20);
      var_time_log 		VARCHAR2(20);
      var_param_log 	VARCHAR2(20);
     
    BEGIN
     
    	var_table_modif:= 'SORDER';
      var_time_log:= TO_CHAR(SYSDATE, 'YYYYMMDDHH24MISS');
     
      IF INSERTING
      THEN
        var_type_modif:= 'INSERT';
        var_new_key		:= :NEW.SOHNUM_0;
        var_old_key		:= 'null';
        var_foreign_key:= 'null';
        var_param_log	:= :NEW.DEMDLVDAT_0;
      ELSIF UPDATING
      THEN
        var_type_modif:= 'UPDATE';
        var_new_key		:= :NEW.SOHNUM_0;
        var_old_key		:= :OLD.SOHNUM_0;
        var_foreign_key:= 'NULL';
        var_param_log	:= :OLD.DEMDLVDAT_0;
     
      ELSIF DELETING
      THEN
        var_type_modif:= 'DELETE';
        var_new_key:= 'NULL';
        var_old_key:= :OLD.SOHNUM_0;
        var_foreign_key:= 'NULL';
        var_param_log:= :OLD.DEMDLVDAT_0;
      END IF;
     
      INSERT INTO NEGOCE.XLOGACT (NUMLOG_0,TABLELOG_0,TYPEMOD_0,NEWKEY_0,OLDKEY_0,TIMELOG_0,FOREIGNKEY_0,PARAM_0) 
      VALUES (' ', var_table_modif, var_type_modif, var_new_key, var_old_key, var_time_log, var_foreign_key, var_param_log);
     
    END;
    Est ce que toutes tes données historisées (old_key, param_log, ...) ont bien des tailles qui rentrent dans un varchar2(20) ?

    Est ce que XLOGACT a des contraintes qui bloqueraient l'insertion ?

    Je demande ça, mais si l'insertion dans XLOGACT plante, l'opération DML sur SORDER est annulée.

    Le trigger se déclenche toujours (sauf s'il est désactivé), sinon y'aurait des gros soucis chez Oracle.

Discussions similaires

  1. Ordre de déclenchement triggers
    Par muchmorehuman dans le forum PL/SQL
    Réponses: 3
    Dernier message: 21/07/2008, 16h43
  2. Réponses: 5
    Dernier message: 02/12/2005, 18h54
  3. TRIGGER : Ordres de déclenchement
    Par ducho dans le forum Oracle
    Réponses: 1
    Dernier message: 15/11/2005, 14h44
  4. [SQL SERVER] : Problème de déclenchement d'un trigger
    Par sosso971 dans le forum Développement
    Réponses: 1
    Dernier message: 04/11/2005, 08h11
  5. 1er déclenchement d'un trigger d'auto-incrément
    Par babylone7 dans le forum Administration
    Réponses: 11
    Dernier message: 11/03/2004, 16h21

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