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

SQL Oracle Discussion :

Problême déclencheur oracle


Sujet :

SQL Oracle

  1. #1
    Membre habitué
    Profil pro
    Chef de projet Technique
    Inscrit en
    Avril 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet Technique

    Informations forums :
    Inscription : Avril 2007
    Messages : 89
    Points : 125
    Points
    125
    Par défaut Problême déclencheur oracle
    Bonjour,

    j'aimerais incrémenter automatiquement une valeur dans une table et qu'elle s'incrémente également dans une autre table.
    Voici mon code actuel qui ne fonctionne pas:

    les 2 première partie marche

    /*Création d'une séquence d'auto incrémentation */
    CREATE SEQUENCE seq_autoIncrementOrdeCadre
    START WITH 1
    MAXVALUE 999999999999999999999999
    MINVALUE 1
    NOCYCLE
    NOCACHE
    NOORDER;

    /*Création d'un déclencheur */
    CREATE TRIGGER autoIncrementOrdeCadre
    BEFORE INSERT
    ON cadre
    FOR EACH ROW
    BEGIN
    SELECT seq_autoIncrementOrdeCadre.NEXTVAL
    INTO :NEW.ordre_cadre
    FROM dual;
    END ;
    /


    j'ai une erreur à partir d'ici:

    /*Création d'un déclencheur */
    CREATE TRIGGER autoIncrementOrdeCadreLigne
    BEFORE INSERT
    ON cadre_ligne
    FOR EACH ROW
    BEGIN
    SELECT seq_autoIncrementOrdeCadre.NEXTVAL
    INTO :NEW.ordre_cadre
    FROM dual;
    END ;
    /

  2. #2
    Membre actif Avatar de Nounoursonne
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 264
    Points : 208
    Points
    208
    Par défaut
    mouais, ça doit venir de la ligne 12

  3. #3
    Rédactrice

    Avatar de kalyparker
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Janvier 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 327
    Points : 2 998
    Points
    2 998
    Par défaut
    Bonjour,

    Quelle est l'erreur que tu as ?

    Essaye de faire un curval avant de faire le nextval (pas sure que ça change quelques chose, mais juste pour voir)

    voili, voilou

  4. #4
    Membre habitué
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2007
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2007
    Messages : 126
    Points : 171
    Points
    171
    Par défaut pb de séquence dans un déclencheur
    Bonsoir,

    Tu dois récupérer la séquence dans une variable, puis utiliser cette variable.

    Cdt

  5. #5
    Membre habitué
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2007
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2007
    Messages : 126
    Points : 171
    Points
    171
    Par défaut
    Bonjour,

    J'ai retrouvé un script qui explicite la méthode

    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
    create or replace trigger TRG_TOTO before insert
    on TOTO for each row
    declare
        integrity_error  exception;
        errno            integer;
        errmsg           char(200);
        no	number;
    begin
        select seq_toto.nextval into no from dual;
        :new.toto_id := no;
     
    --  Traitement d'erreurs
    exception
        when integrity_error then
           raise_application_error(errno, errmsg);
    end;
    /
    Cdt

  6. #6
    Membre habitué
    Profil pro
    Chef de projet Technique
    Inscrit en
    Avril 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet Technique

    Informations forums :
    Inscription : Avril 2007
    Messages : 89
    Points : 125
    Points
    125
    Par défaut
    Bonjour,

    Je ne parvient pas à comprendre les lignes suivantes:
    select seq_toto.nextval into no from dual;
    :new.toto_id := no;


    pouvez vous m'expliquer ce qu'elles font ?

  7. #7
    Membre habitué
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2007
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2007
    Messages : 126
    Points : 171
    Points
    171
    Par défaut
    au lieu de faire l'affectation directement dans la variable :new référencant la table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT seq_autoIncrementOrdeCadre.NEXTVAL
    INTO :NEW.ordre_cadre
    from dual;
    il faut passer par une variable intermédiaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT seq_autoIncrementOrdeCadre.NEXTVAL
    INTO no
    from dual;
     
    :NEW.ordre_cadre := no;
    je ne peux pas être plus clair, sinon il y a des cours de Plsql ...

    Cdt

  8. #8
    McM
    McM est déconnecté
    Expert éminent

    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
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    (c'est l'icone # dans l'éditeur de message).

    Tu dis avoir une erreur, mais on ne sait pas laquelle, à quel moment, etc..
    Fais un Show_error; lorsque tu compiles tes triggers ou ta séquence.

  9. #9
    Membre habitué
    Profil pro
    Chef de projet Technique
    Inscrit en
    Avril 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet Technique

    Informations forums :
    Inscription : Avril 2007
    Messages : 89
    Points : 125
    Points
    125
    Par défaut
    Bonjour,

    SQL PLUS indique qu'il y a une erreur de compilation.

  10. #10
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Citation Envoyé par McM
    Tu dis avoir une erreur, mais on ne sait pas laquelle, à quel moment, etc..
    Fais un Show_error; lorsque tu compiles tes triggers ou ta séquence.

  11. #11
    Membre habitué
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2007
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2007
    Messages : 126
    Points : 171
    Points
    171
    Par défaut Merci De Tester Les Solutions Proposees
    Essaye au moins les solutions que l'on te donne, je suis sûr que ça marche, car extrait d'une de mes applis.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    CREATE TRIGGER autoIncrementOrdeCadreLigne
    BEFORE INSERT
    ON cadre_ligne
    FOR EACH ROW
    DECLARE
    no number; 
    BEGIN
    SELECT seq_autoIncrementOrdeCadre.NEXTVAL
    INTO /*:NEW.ordre_cadre*/ no
    FROM dual;
    :NEW.ordre_cadre := no ;
    END ;

  12. #12
    Membre habitué
    Profil pro
    Chef de projet Technique
    Inscrit en
    Avril 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet Technique

    Informations forums :
    Inscription : Avril 2007
    Messages : 89
    Points : 125
    Points
    125
    Par défaut
    OK c'est bon ça fonctionne maintenant.
    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème déclencheur sur oracle
    Par gapse dans le forum Oracle
    Réponses: 2
    Dernier message: 25/07/2006, 09h58
  2. Réponses: 1
    Dernier message: 22/03/2006, 08h24
  3. Problème sur Oracle Toolbox
    Par Doctor Z dans le forum Oracle
    Réponses: 9
    Dernier message: 09/11/2004, 08h48
  4. Problème Migration Oracle
    Par bob_doulz dans le forum Administration
    Réponses: 4
    Dernier message: 20/04/2004, 09h56
  5. Problème composant Oracle
    Par alexmorel dans le forum Bases de données
    Réponses: 12
    Dernier message: 24/02/2004, 08h53

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