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 :

Problème de déclenchement d'un trigger sous oracle


Sujet :

PL/SQL Oracle

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 11
    Points : 7
    Points
    7
    Par défaut Problème de déclenchement d'un trigger sous oracle
    Bonjour à tous !
    Je gère une base de données sous oracle, et je dois créer un déclencheur. J'ai décidé de le faire se déclencher lorsqu'on met à jour les données de la table Employe(IdPersonne,nom,prenom,fonction,salaire,null,null) ( null et null sont des identifiants d'autres tables ).

    J'ai donc le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE OR REPLACE TRIGGER Declen_avtUpdate_Employe
    BEFORE UPDATE OR INSERT ON Employe
    FOR EACH ROW
    DECLARE
    sal_diff number;
    BEGIN
    sal_diff := :new.salaire - :old.salaire;
    DBMS_OUTPUT.PUT_LINE('Employé');
    END;
    Il est censé calculé la différence entre les deux salaires, et afficher Employé. Le problème, c'est qu'en faisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO Employe VALUES(1,'dupont',Type_prenoms('jean', 'Emile','Bernard'),'patron',5000,null,null);
    puis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE Employe
    set Employe.salaire = 2000
    where Employe.IdPersonne = 1;
    puis commit;

    Le déclencheur ne se lance pas, et n'affiche pas Employe.
    Je l'ai déja activé par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TRIGGER Declen_AvtUpdate_Employe ENABLE;
    Pouvez vous m'aider s'il vous plait ?
    Merci d'avance !
    R.

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Si vous voulez tester :

    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
    CREATE OR REPLACE TYPE Type_personne AS OBJECT(
    IdPersonne NUMBER(3),
    nom VARCHAR(20),
    prenom Type_prenoms)
    NOT FINAL;
    /
     
    CREATE OR REPLACE TYPE Type_Employe UNDER Type_Personne (
    fonction  VARCHAR(20),
    salaire NUMBER(10),
    numHangarConteneur     NUMBER(3),
    numQuaiBateau    NUMBER(3))
    INSTANTIABLE
    FINAL;
    /
     
    CREATE TABLE Employe OF Type_Employe (
    CONSTRAINT Existe_id IdPersonne NOT NULL,
    CONSTRAINT Existe_nom nom  NOT NULL,
    CONSTRAINT Existe_prenom prenom  NOT NULL,
    CONSTRAINT Existe_fonction fonction  NOT NULL,
    CONSTRAINT Existe_salaire salaire NOT NULL,
    CONSTRAINT ClePrimaireEmploye PRIMARY KEY ( IdPersonne ) );

  3. #3
    Membre averti Avatar de xdescamp
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 300
    Points : 442
    Points
    442
    Par défaut
    Ce n'est pas juste un problème d'affichage non activé ?
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Serveroutput On;

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Non, je viens d'essayer, ca ne marche pas. Merci quand même

  5. #5
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Citation Envoyé par radious Voir le message
    Si vous voulez tester :
    J'ai voulu tester mais ça ne marche pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 
    Connected as mni
     
    SQL> 
    SQL> CREATE OR REPLACE TYPE Type_personne AS OBJECT(
      2  IdPersonne NUMBER(3),
      3  nom VARCHAR(20),
      4  prenom Type_prenoms)
      5  NOT FINAL;
      6  /
     
    Warning: Type created with compilation errors

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Oui, j'ai oublié de vous donner le code de création du Type_Prenoms :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     CREATE OR REPLACE TYPE Type_prenoms AS VARRAY(5) OF VARCHAR(30);
    /

  7. #7
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Chez moi ça marche
    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
     
    Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 
    Connected as mni
     
    SQL> 
    SQL> CREATE OR REPLACE TYPE Type_prenoms AS VARRAY(5) OF VARCHAR(30);
      2  /
     
    Type created
    SQL> CREATE OR REPLACE TYPE Type_personne AS OBJECT(
      2  IdPersonne NUMBER(3),
      3  nom VARCHAR(20),
      4  prenom Type_prenoms)
      5  NOT FINAL;
      6  /
     
    Type created
    SQL> CREATE OR REPLACE TYPE Type_Employe UNDER Type_Personne (
      2  fonction  VARCHAR(20),
      3  salaire NUMBER(10),
      4  numHangarConteneur     NUMBER(3),
      5  numQuaiBateau    NUMBER(3))
      6  INSTANTIABLE
      7  FINAL;
      8  /
     
    Type created
    SQL> CREATE TABLE Employe OF Type_Employe (
      2  CONSTRAINT Existe_id IdPersonne NOT NULL,
      3  CONSTRAINT Existe_nom nom  NOT NULL,
      4  CONSTRAINT Existe_prenom prenom  NOT NULL,
      5  CONSTRAINT Existe_fonction fonction  NOT NULL,
      6  CONSTRAINT Existe_salaire salaire NOT NULL,
      7  CONSTRAINT ClePrimaireEmploye PRIMARY KEY ( IdPersonne ) )
      8  /
     
    Table created
     
    SQL> 
    SQL> CREATE OR REPLACE TRIGGER Declen_avtUpdate_Employe
      2  BEFORE UPDATE OR INSERT ON Employe
      3  FOR EACH ROW
      4  DECLARE
      5  sal_diff number;
      6  BEGIN
      7  sal_diff := :new.salaire - :old.salaire;
      8  DBMS_OUTPUT.PUT_LINE('Employé');
      9  END;
     10  /
     
    Trigger created
     
    SQL> show err
    No errors for TRIGGER MNI.DECLEN_AVTUPDATE_EMPLOYE
     
    SQL> set serveroutput on
    SQL> INSERT INTO Employe VALUES(1,'dupont',Type_prenoms('jean', 'Emile','Bernard'),'patron',5000,NULL,NULL);
     
    Employé
     
    1 row inserted
     
    SQL> 
    SQL> UPDATE Employe
      2  SET Employe.salaire = 2000
      3  WHERE Employe.IdPersonne = 1;
     
    Employé
     
    1 row updated
     
    SQL>

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    En effet, j'avais oublié le set serverOutput on.

    Merci beaucoup et bonne soirée !
    R.

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

Discussions similaires

  1. création de trigger sous oracle 9i
    Par bkina dans le forum PL/SQL
    Réponses: 2
    Dernier message: 12/11/2007, 13h58
  2. Problème d'insertion dans une table sous oracle
    Par admcent dans le forum Administration
    Réponses: 4
    Dernier message: 24/10/2007, 13h58
  3. Trigger sous oracle
    Par arezki76 dans le forum Oracle
    Réponses: 3
    Dernier message: 31/08/2006, 12h49
  4. problème d'exécution d'un report sous oracle 10g
    Par seure dans le forum Reports
    Réponses: 1
    Dernier message: 22/03/2006, 17h47
  5. [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

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