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 :

[Pl/Sql] Trigger et date, heure system


Sujet :

Oracle

  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2002
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Août 2002
    Messages : 8
    Points : 5
    Points
    5
    Par défaut [Pl/Sql] Trigger et date, heure system
    Bonjour j'aimerais pouvoir ajouter la date et l'heure system dans mon trigger:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    CREATE OR REPLACE TRIGGER ajout_date_heure_order_tripg
    after insert on prono_last_order
    for each row
    begin
    update into prono_last_order 
    set date_order=to_char(SYSDATE,'MM-DD-YYYY'),
    heure_order=to_char(SYSDATE,'HH-MM') ;
    end;
    /
    Une personne pourrait m'aider, il y a surement une erreur dans le code de mon trigger!
    merci d'avance.

  2. #2
    Membre éprouvé
    Inscrit en
    Avril 2006
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1 024
    Points : 1 294
    Points
    1 294
    Par défaut
    MI pour "minute", MM c'est "mois" d'ailleur tu le sais puisque c'est ce que tu as mis pour la date!

    Autre remarque: Ton script fonctionne si tes champs date_order et heure_order sont de type caractère (varchar2, char...) sinon c'est pas bon...

  3. #3
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 33
    Points : 40
    Points
    40
    Par défaut
    CREATE OR REPLACE TRIGGER ajout_date_heure_order_tripg
    after insert on prono_last_order
    for each row
    begin
    update into prono_last_order
    set date_order=to_char(SYSDATE,'MM-DD-YYYY'),
    heure_order=to_char(SYSDATE,'HH-MM') ;
    end;
    /
    bonjour,
    ci-aprés quelques remarques :
    1. on n'utilise pas update avec into,la syntaxe est
      update table
      set champ=valeur...
      [where condition(s)]
    2. ton update va mettre à jour tous les enregistrements de la table car il n'y a pas de clause where donc il te faut une ligne comme suite :
      where ta_cle=:NEW.ta_cle
      (:NEW sous oracle désigne l'enregistrement inséré)
    3. pour la date et l'heure si tu utilise to_char() il faut que les champs soient de type caractère(char,varchar,varchar2....) et pour les minute c'est MI pas MM pour les heure tu peux aussi utiliser le format sur 24 heures HH24.


    bon courage.

  4. #4
    Membre éprouvé
    Inscrit en
    Avril 2006
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1 024
    Points : 1 294
    Points
    1 294
    Par défaut
    oulà oui, j'avais pas tout vu!!

  5. #5
    Futur Membre du Club
    Inscrit en
    Août 2002
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Août 2002
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Voici le code corrigé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    CREATE OR REPLACE TRIGGER ajout_date_heure_last_order_tripg
    after insert on prono_last_order
    for each row
    begin
    update prono_last_order 
    set date_order=to_char(SYSDATE,'MM-DD-YYYY'),heure_order=to_char(SYSDATE,'HH24MI') 
    end;
    Et lorsque j'ajoute un element dans la table,
    voici le code d'erreur de ce trigger:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    The following error has occurred:
    ORA-04091: table BAAN.PRONO_LAST_ORDER is mutating, trigger/function may not see it
    ORA-06512: at "BAAN.DATE_HEURE_LAST_ORDER_TRIPG", line 2
    ORA-04088: error during execution of trigger 'BAAN.DATE_HEURE_LAST_ORDER_TRIPG'
    ?

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Février 2004
    Messages : 118
    Points : 90
    Points
    90
    Par défaut
    Cherche sur le forum ou dans les doc du site developpez, il y a plein d'infos sur les mutating table ....

  7. #7
    Membre éprouvé
    Inscrit en
    Avril 2006
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1 024
    Points : 1 294
    Points
    1 294
    Par défaut
    En gros, si tu veux ne changer que ton enregistrement courant, ne passe pas par un update mais par les :NEW.

    ça devrais donner un truc du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    BEGIN
    :NEW.date_order=to_char(SYSDATE,'MM-DD-YYYY');
    :NEW.heure_order=to_char(SYSDATE,'HH24MI');
    END

  8. #8
    Futur Membre du Club
    Inscrit en
    Août 2002
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Août 2002
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Ok merci.

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

Discussions similaires

  1. Agrégation SQL sur plusieurs Date/Heure
    Par SQL_i dans le forum SQL
    Réponses: 10
    Dernier message: 12/07/2011, 15h12
  2. sql server et date du system
    Par Romantic_a dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 16/05/2008, 14h09
  3. inserer la date et l'heure systeme dans une table
    Par argon dans le forum Langage SQL
    Réponses: 5
    Dernier message: 11/07/2005, 08h32
  4. [SQL] selection des dates en ne distinguant pas l'heure
    Par meufeu dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 01/06/2005, 11h29
  5. Forcer date, heure et seconde sous sql server2000
    Par sorel dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 12/05/2005, 18h49

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