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

Oracle Discussion :

Problème sur un Trigger


Sujet :

Oracle

  1. #21
    Membre émérite
    Avatar de hpalpha
    Inscrit en
    Mars 2002
    Messages
    769
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 769
    Points : 2 545
    Points
    2 545
    Par défaut
    Citation Envoyé par Fred_D
    la bonne vielle méthode dite : du bourrin
    ouai je sais mais l'avantage c'est que c'est valable quelque soit le language, par exemple en cobol, sans les outils de debug, c'etait plein de "display" et de commentaires pour trouvé le bug
    Delphi 2009 - ZeosLib - DevExpress - TMS - PgDAC
    PostgreSQL 8.4 sous Debian
    Sites : http://postgresql.developpez.com http://dgriessinger.developpez.com

  2. #22
    Membre régulier Avatar de Isa31
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 267
    Points : 109
    Points
    109
    Par défaut
    Bon je crois que je vais finir par m'ennerver. J'ai quasiment tout supprimé de mon trigger et il y a toujours le même problème.

    Il ne me reste plus que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    CREATE OR REPLACE TRIGGER TEST_ADMIN.MINFORIBTRIGGER 
    BEFORE INSERT OR DELETE  OR UPDATE ON TEST_ADMIN.MINFORIB 
    REFERENCING OLD AS OLD NEW AS NEW 
    FOR EACH ROW 
    WHEN (1 = 1) 
    BEGIN 
     
    -- Insertion dans la table de suivi 
     INSERT INTO UTMR_SUIVIRIB (SRIB_NO, SRIB_RIB_NOPK, SRIB_BNQ_ETAB, SRIB_BNQ_GUIC, SRIB_IBQ_CODE, SRIB_TITUL, SRIB_NOCPTE, SRIB_CLE, SRIB_TYPE, SRIB_MAJ_ID, SRIB_MAJ_DT, SRIB_DAT_INCID DATE) 
     VALUES(:new.RIB_NO_PK, :new.RIB_BNQ_ETAB, :new.RIB_BNQ_GUIC, :new.RIB_IBQ_CODE, :new.RIB_TITUL,:new.RIB_NOCPTE, :new.RIB_CLE, :new.RIB_TYPE, :new.MAJ_ID, :new.MAJ_DT, :new.RIB_DAT_INCID )
     
    END;
    Je suis complètement perdu!!

  3. #23
    CD
    CD est déconnecté
    Membre habitué
    Inscrit en
    Septembre 2004
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 127
    Points : 151
    Points
    151
    Par défaut
    Voilà des exemples qui peuvent aider, à adapter en fonction des tables utilisées :

    Tout d'abord, je déclare une table et une table de suivi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    test@BROCANTE> create table toto1 (id number, texte char(50));
     
    Table crÚÚe.
     
    test@BROCANTE> create table suivi_toto1(id number, texte char(50), action char(10));
     
    Table crÚÚe.
    Ensuite, je déclare 3 triggers pour faire les insertions dans la table suivi_toto1 (avec la clause declare pour Fred_d ). Au lieu de passer par les variables Tmp, on pourrait mettre la référence :old ou :new directement :

    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
    CREATE OR REPLACE TRIGGER test.montrigger
    BEFORE DELETE ON TEST.toto1
    REFERENCING OLD AS OLD NEW AS NEW
    FOR EACH ROW
    declare
    TmpId number;
    TmpTexte char(50);
    BEGIN
    TmpId := :old.id;
    TmpTexte := :old.texte;
    insert into suivi_toto1 values (TmpId, TmpTexte, 'DELETE');
    END;
     
     
    CREATE OR REPLACE TRIGGER test.montrigger2
    BEFORE UPDATE ON TEST.toto1
    REFERENCING OLD AS OLD NEW AS NEW
    FOR EACH ROW
    declare
    TmpId number;
    TmpTexte char(50);
    BEGIN
    TmpId := :old.id;
    TmpTexte := :old.texte;
    insert into suivi_toto1 values (TmpId, TmpTexte, 'UPDATE');
    END;
     
     
    CREATE OR REPLACE TRIGGER test.montrigger3
    BEFORE INSERT ON TEST.toto1
    REFERENCING OLD AS OLD NEW AS NEW
    FOR EACH ROW
    declare
    TmpId number;
    TmpTexte char(50);
    BEGIN
    TmpId := :new.id;
    TmpTexte := :new.texte;
    insert into suivi_toto1 values (TmpId, TmpTexte, 'INSERT');
    END;
    Insertions dans la table toto1 :
    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
    test@BROCANTE> insert into toto1 values(1, 'Texte 1');
     
    1 ligne crÚÚe.
     
    test@BROCANTE> insert into toto1 values (2, 'Texte 2');
     
    1 ligne crÚÚe.
     
    test@BROCANTE> commit;
     
    Validation effectuÚe.
     
    test@BROCANTE> select * from suivi_toto1;
     
            ID TEXTE                                              ACTION
    ---------- -------------------------------------------------- ----------
             1 Texte 1                                            INSERT
             2 Texte 2                                            INSERT
     
    test@BROCANTE> select * from toto1;
     
            ID TEXTE
    ---------- --------------------------------------------------
             1 Texte 1
             2 Texte 2
    Update de la table toto1 :
    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
    test@BROCANTE> insert into toto1 values (3, 'Texte 3');
     
    1 ligne crÚÚe.
     
    test@BROCANTE> update toto1 set id=3 where id=2;
     
    1 ligne mise Ó jour.
     
    test@BROCANTE> commit;
     
    Validation effectuÚe.
     
    test@BROCANTE> select * from suivi_toto1;
     
            ID TEXTE                                              ACTION
    ---------- -------------------------------------------------- ----------
             1 Texte 1                                            INSERT
             2 Texte 2                                            INSERT
             3 Texte 3                                            INSERT
             2 Texte 2                                            UPDATE
     
    test@BROCANTE> update toto1 set texte = 'Texte 4' where id=3;
     
    2 ligne(s) mise(s) Ó jour.
     
    test@BROCANTE> commit;
     
    Validation effectuÚe.
     
    test@BROCANTE> select * from suivi_toto1;
     
            ID TEXTE                                              ACTION
    ---------- -------------------------------------------------- ----------
             1 Texte 1                                            INSERT
             2 Texte 2                                            INSERT
             3 Texte 3                                            INSERT
             2 Texte 2                                            UPDATE
             3 Texte 2                                            UPDATE
             3 Texte 3                                            UPDATE
     
    6 ligne(s) sÚlectionnÚe(s).
    On voit que si je fait 2 update, j'ai bien mes 2 lignes dans la table de suivi.

    Suppression de lignes :
    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
    test@BROCANTE> delete from toto1 where id=3;
     
    2 ligne(s) supprimÚe(s).
     
    test@BROCANTE> select * from toto1;
     
            ID TEXTE
    ---------- --------------------------------------------------
             1 Texte 1
     
    test@BROCANTE> commit;
     
    Validation effectuÚe.
     
    test@BROCANTE> select * from suivi_toto1;
     
            ID TEXTE                                              ACTION
    ---------- -------------------------------------------------- ----------
             1 Texte 1                                            INSERT
             2 Texte 2                                            INSERT
             3 Texte 3                                            INSERT
             2 Texte 2                                            UPDATE
             3 Texte 2                                            UPDATE
             3 Texte 3                                            UPDATE
             3 Texte 4                                            DELETE
             3 Texte 4                                            DELETE
     
    8 ligne(s) sÚlectionnÚe(s).
    Pareil que pour l'insert, je supprime 2 ligne, j'ai 2 actions dans ma table de suivi.

  4. #24
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    il ne manquerait pas grand chose pour nous proposer un tutoriel à publier


  5. #25
    Membre régulier Avatar de Isa31
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 267
    Points : 109
    Points
    109
    Par défaut
    Merci CD je vais essayer de reprendre mon trigger avec ce que tu m'as donné.

    Je vous tiendrais au courant.

  6. #26
    CD
    CD est déconnecté
    Membre habitué
    Inscrit en
    Septembre 2004
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 127
    Points : 151
    Points
    151
    Par défaut
    J'ai oublié l'histoire de rollback aussi... Il est géré par dans trigger par Oracle :

    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
    test@BROCANTE> insert into toto1 values (5, 'Texte 5 pour rollback');
     
    1 ligne crÚÚe.
     
    test@BROCANTE> select * from toto1;
     
            ID TEXTE
    ---------- --------------------------------------------------
             1 Texte 1
             5 Texte 5 pour rollback
     
    test@BROCANTE> select * from suivi_toto1;
     
            ID TEXTE                                              ACTION
    ---------- -------------------------------------------------- ----------
             1 Texte 1                                            INSERT
             2 Texte 2                                            INSERT
             3 Texte 3                                            INSERT
             2 Texte 2                                            UPDATE
             3 Texte 2                                            UPDATE
             3 Texte 3                                            UPDATE
             3 Texte 4                                            DELETE
             3 Texte 4                                            DELETE
             5 Texte 5 pour rollback                              INSERT
     
    9 ligne(s) sÚlectionnÚe(s).
     
    test@BROCANTE> rollback;
     
    Annulation (ROLLBACK) effectuÚe.
     
    test@BROCANTE> select * from suivi_toto1;
     
            ID TEXTE                                              ACTION
    ---------- -------------------------------------------------- ----------
             1 Texte 1                                            INSERT
             2 Texte 2                                            INSERT
             3 Texte 3                                            INSERT
             2 Texte 2                                            UPDATE
             3 Texte 2                                            UPDATE
             3 Texte 3                                            UPDATE
             3 Texte 4                                            DELETE
             3 Texte 4                                            DELETE
     
    8 ligne(s) sÚlectionnÚe(s).
    La modification annulée dans toto1 l'est bien aussi dans suivi_toto1

    Sinon, pour le tutoriel, je pensais déjà essayer de me tester sur la FAQ pour quelques petits points qui reviennent souvent, comme le formatage de l'affichage sous SQL*Plus, je ne l'ai pas vu je crois (j'ai peut être mal lu aussi...)

  7. #27
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    pas de problème

  8. #28
    Membre régulier Avatar de Isa31
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 267
    Points : 109
    Points
    109
    Par défaut
    Bonjour,

    Ca ne marche toujours pas. Lors d'un test j'ai l'erreur suivant :
    ORA-04098: Déclencheur 'TEST_ADMIN.MINFORIBTRUPDATE' non valide. Echec de la revalidation
    Voici mon trigger :
    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
    CREATE OR REPLACE TRIGGER TEST_ADMIN.MINFORIBTrUpdate 
    BEFORE UPDATE ON TEST_ADMIN.MINFORIB 
    REFERENCING OLD AS OLD NEW AS NEW 
    FOR EACH ROW 
    declare 
    TmpRib_no_pk number;
    TmpRib_bnq_etab varchar(5);
    TmpRib_bnq_guic varchar(5);
    TmpRib_ibq_code number;
    TmpRib_titul varchar(25);
    TmpRib_nocpte varchar(11);
    TmpRib_cle number;
    TmpRib_type char(1);
    TmpMaj_id varchar(4);
    TmpMaj_dt date;
    TmpRib_dat_incid date;
     
    BEGIN 
    TmpRib_no_pk := :old.RIB_NO_PK;
    TmpRib_bnq_etab := :old.RIB_BNQ_ETAB;
    TmpRib_bnq_guic := :old.RIB_BNQ_GUIC;
    TmpRib_ibq_code := :old.RIB_IBQ_CODE;
    TmpRib_titul := :old.RIB_TITUL;
    TmpRib_nocpte := :old.RIB_NOCPTE;
    TmpRib_cle := :old.RIB_CLE;
    TmpRib_type := :old.RIB_TYPE;
    TmpMaj_id := :old.MAJ_ID;
    TmpMaj_dt := :old.MAJ_DT;
    TmpRib_dat_incid := :old.RIB_DAT_INCID,
    INSERT INTO UTMR_SUIVIRIB  VALUES (TmpRib_no_pk,TmpRib_bnq_etab,TmpRib_bnq_guic,TmpRib_ibq_code,TmpRib_titul,
    TmpRib_nocpte,TmpRib_cle,TmpRib_type,TmpMaj_id,TmpMaj_dt,TmpRib_dat_incid, 'UPDATE'); 
    END;
    Ensuite voici la table MINFORIB :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    MINFORIB (
      RIB_NO_PK NUMBER(*) NOT NULL,
      RIB_BNQ_ETAB VARCHAR2(5) NOT NULL,
      RIB_BNQ_GUIC VARCHAR2(5) NOT NULL,
      RIB_IBQ_CODE NUMBER(3, 0),
      RIB_TITUL VARCHAR2(25) NOT NULL,
      RIB_NOCPTE VARCHAR2(11) NOT NULL,
      RIB_CLE NUMBER(2, 0) NOT NULL,
      RIB_TYPE CHAR(1) DEFAULT 'T'
     NOT NULL,
      MAJ_ID VARCHAR2(4) NOT NULL,
      MAJ_DT DATE NOT NULL,
      RIB_DAT_INCID DATE
    )
    Et enfin ma table UTMR_SUIVIRIB :
    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
    UTMR_SUIVIRIB (
      RIB_NO_PK NUMBER(*) NOT NULL,
      RIB_BNQ_ETAB VARCHAR2(5) NOT NULL,
      RIB_BNQ_GUIC VARCHAR2(5) NOT NULL,
      RIB_IBQ_CODE NUMBER(3, 0),
      RIB_TITUL VARCHAR2(25) NOT NULL,
      RIB_NOCPTE VARCHAR2(11) NOT NULL,
      RIB_CLE NUMBER(2, 0) NOT NULL,
      RIB_TYPE CHAR(1) DEFAULT 'T'
           NOT NULL,
      MAJ_ID VARCHAR2(4) NOT NULL,
      MAJ_DT DATE NOT NULL,
      RIB_DAT_INCID DATE,
      SRIB_TYPACT VARCHAR2(25) NOT NULL
    )
    Je ne vois pas ou est l'erreur... En fait je n'y vois plus rien....

  9. #29
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    Veuillez bien suivre les réponses, c'est pénible de répéter tout le temps la même chose

    IL NE FAUT PAS DE DECLARE !

    Et show err ou show error permet d'indiquer l'erreur.

  10. #30
    Membre régulier Avatar de Isa31
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 267
    Points : 109
    Points
    109
    Par défaut
    Si j'enlève toutes les déclaration j'ai toujours la même erreur.

    Ensuite le ne m'indique rien...

    Je m'excuse d'être aussi bête mais là je saisi pas tout.

  11. #31
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    *soupir*

    Que donne ceci :

    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
    CREATE OR REPLACE TRIGGER TEST_ADMIN.MINFORIBTrUpdate
    BEFORE UPDATE ON TEST_ADMIN.MINFORIB
    REFERENCING OLD AS OLD NEW AS NEW
    FOR EACH ROW
    TmpRib_no_pk number;
    TmpRib_bnq_etab varchar(5);
    TmpRib_bnq_guic varchar(5);
    TmpRib_ibq_code number;
    TmpRib_titul varchar(25);
    TmpRib_nocpte varchar(11);
    TmpRib_cle number;
    TmpRib_type char(1);
    TmpMaj_id varchar(4);
    TmpMaj_dt date;
    TmpRib_dat_incid date;
     
    BEGIN
    TmpRib_no_pk := :old.RIB_NO_PK;
    TmpRib_bnq_etab := :old.RIB_BNQ_ETAB;
    TmpRib_bnq_guic := :old.RIB_BNQ_GUIC;
    TmpRib_ibq_code := :old.RIB_IBQ_CODE;
    TmpRib_titul := :old.RIB_TITUL;
    TmpRib_nocpte := :old.RIB_NOCPTE;
    TmpRib_cle := :old.RIB_CLE;
    TmpRib_type := :old.RIB_TYPE;
    TmpMaj_id := :old.MAJ_ID;
    TmpMaj_dt := :old.MAJ_DT;
    TmpRib_dat_incid := :old.RIB_DAT_INCID;
    INSERT INTO UTMR_SUIVIRIB  VALUES (TmpRib_no_pk,TmpRib_bnq_etab,TmpRib_bnq_guic,TmpRib_ibq_code,TmpRib_titul,
    TmpRib_nocpte,TmpRib_cle,TmpRib_type,TmpMaj_id,TmpMaj_dt,TmpRib_dat_incid, 'UPDATE');
    END;
    show err

  12. #32
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    ou plus simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    CREATE OR REPLACE TRIGGER TEST_ADMIN.MINFORIBTrUpdate
    BEFORE UPDATE ON TEST_ADMIN.MINFORIB
    REFERENCING OLD AS OLD NEW AS NEW
    FOR EACH ROW
     
    BEGIN
     
    INSERT INTO UTMR_SUIVIRIB  VALUES (:old.RIB_NO_PK,:old.RIB_BNQ_ETAB,:old.RIB_BNQ_GUIC,:old.RIB_IBQ_CODE,:old.RIB_TITUL,
    :old.RIB_NOCPTE,:old.RIB_CLE,:old.RIB_TYPE,:old.MAJ_ID,:old.MAJ_DT,:old.RIB_DAT_INCID, 'UPDATE');
    END;
    show err

  13. #33
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    je viens de voir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TmpRib_dat_incid := :old.RIB_DAT_INCID,
    avec un ; à la place de , ça devrait aller mieux

    PS : c'est le dernier sujet, débuggage auquel tu auras droit conformément aux régles du forum.

  14. #34
    Membre régulier Avatar de Isa31
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 267
    Points : 109
    Points
    109
    Par défaut
    Je suis désolée mais j'ai toujours le même problème et le ne me donne pas d'infos.

    Je m'excuse d'insister mais je suis perdue.

  15. #35
    CD
    CD est déconnecté
    Membre habitué
    Inscrit en
    Septembre 2004
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 127
    Points : 151
    Points
    151
    Par défaut


    Bon, on reprend alors... J'ai testé ton trigger, il marche si on corrige la faute de frappe.

    Essaye d'exécuter cela sous SQL*Plus :

    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
    CREATE OR REPLACE TRIGGER TEST_ADMIN.MINFORIBTrUpdate 
    BEFORE UPDATE ON TEST_ADMIN.MINFORIB 
    REFERENCING OLD AS OLD NEW AS NEW 
    FOR EACH ROW 
    declare 
    TmpRib_no_pk number; 
    TmpRib_bnq_etab varchar(5); 
    TmpRib_bnq_guic varchar(5); 
    TmpRib_ibq_code number; 
    TmpRib_titul varchar(25); 
    TmpRib_nocpte varchar(11); 
    TmpRib_cle number; 
    TmpRib_type char(1); 
    TmpMaj_id varchar(4); 
    TmpMaj_dt date; 
    TmpRib_dat_incid date; 
     
    BEGIN 
    TmpRib_no_pk := :old.RIB_NO_PK; 
    TmpRib_bnq_etab := :old.RIB_BNQ_ETAB; 
    TmpRib_bnq_guic := :old.RIB_BNQ_GUIC; 
    TmpRib_ibq_code := :old.RIB_IBQ_CODE; 
    TmpRib_titul := :old.RIB_TITUL; 
    TmpRib_nocpte := :old.RIB_NOCPTE; 
    TmpRib_cle := :old.RIB_CLE; 
    TmpRib_type := :old.RIB_TYPE; 
    TmpMaj_id := :old.MAJ_ID; 
    TmpMaj_dt := :old.MAJ_DT; 
    TmpRib_dat_incid := :old.RIB_DAT_INCID; 
    INSERT INTO UTMR_SUIVIRIB  VALUES (TmpRib_no_pk,TmpRib_bnq_etab,TmpRib_bnq_guic,TmpRib_ibq_code,TmpRib_titul, 
    TmpRib_nocpte,TmpRib_cle,TmpRib_type,TmpMaj_id,TmpMaj_dt,TmpRib_dat_incid, 'UPDATE'); 
    END;
    S'il ne fait rien, il faut valider le trigger en donnant la commande suivante :
    Sinon, comme le disait Fred_D, l'erreur vient de la ligne où tu déclares TmpRib_Dat_incid := :old.RIB_DAT_INCID. A la fin de la ligne tu as mis une virgule au lieu d'un point-virgule.

  16. #36
    Membre régulier Avatar de Isa31
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 267
    Points : 109
    Points
    109
    Par défaut
    Ben même en changant le
    ,
    en
    ;
    j'avais la même erreur.
    par contre j'ai testé ton code et c'est OK!!!!

    Merci beaucoup pour votre aide a vous tous.




    Et c'est promi je ne demanderais plus de debuggage.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Problème sur un trigger d'insertion
    Par houda_dd dans le forum PL/SQL
    Réponses: 6
    Dernier message: 31/01/2012, 03h14
  2. Problème sur un trigger
    Par anthonyplay dans le forum PL/SQL
    Réponses: 3
    Dernier message: 30/11/2010, 17h51
  3. Problème sur un trigger
    Par dnboa dans le forum PL/SQL
    Réponses: 7
    Dernier message: 21/11/2008, 17h22
  4. Probléme sur un trigger
    Par izghad_06 dans le forum PL/SQL
    Réponses: 8
    Dernier message: 10/06/2008, 12h46
  5. Problème sur les triggers
    Par loic20h28 dans le forum Langage SQL
    Réponses: 15
    Dernier message: 22/01/2008, 19h37

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