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

DB2 Discussion :

MAJ automatique d'un champ lors d'un update


Sujet :

DB2

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 52
    Points : 54
    Points
    54
    Par défaut MAJ automatique d'un champ lors d'un update
    Bonjour,

    est il possible d'avoir un champs (date ou booleen) mise à jour automatiquement par db2 lors de l'update d'une ligne ( sur n'importe quel autre champ) ?

    merci

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    821
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2008
    Messages : 821
    Points : 1 084
    Points
    1 084
    Par défaut
    Il te faut utiliser un objet SEQUENCE.
    Quelle plate-forme ?
    Quelle version ?
    Description de ta table...

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Points : 1 578
    Points
    1 578
    Par défaut
    On peut faire ceci également avec un trigger sur la table concernée.

  4. #4
    Membre actif
    Inscrit en
    Juin 2008
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Juin 2008
    Messages : 154
    Points : 225
    Points
    225
    Par défaut
    En phase avec Mercure.

    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
    CREATE  TRIGGER XXX.TRIG01      
            AFTER INSERT            
            ON XXX.NOMTAB           
            REFERENCING NEW AS NEW  
            FOR EACH ROW MODE DB2SQL
    UPDATE  NOMTAB                  
        SET COLDATE = CURRENT DATE  
      WHERE IDENT = NEW.IDENT       
        ;                           
     
    CREATE  TRIGGER XXX.TRIG02      
            AFTER UPDATE            
            OF COL1, COL2, ...           
            ON XXX.NOMTAB           
            REFERENCING OLD AS OLD  
            NEW AS NEW              
            FOR EACH ROW MODE DB2SQL
    UPDATE  NOMTAB                  
        SET COLDATE = CURRENT DATE  
      WHERE IDENT = NEW.IDENT       
        ;
    Si tu souhaites initialiser ta date avec un trigger comme ci-dessus, gaffe à ne pas définir cette colonne en NOT NULL.

    Quant au trigger "after update", gaffe de bien mettre le paramètre OF NOMCOL et de ne surtout pas préciser la colonne DATE dans ce paramètre OF, sinon tu boucleras indéfiniment...

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 52
    Points : 54
    Points
    54
    Par défaut
    OK pour le trigger qui en plus me permet d'affiner le processus en selectionnant
    les colonnes updatées qui devront lancer le rafraichissement du champ..

    cependant en terme de conso ( parce que je suis ss zOS) , sachant que j ai des TPs mais aussi des traitements BATCHs qui updatent mes tables massivement, est ce raisonnable ?

    merci pour vos réponses

  6. #6
    Membre actif
    Inscrit en
    Juin 2008
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Juin 2008
    Messages : 154
    Points : 225
    Points
    225
    Par défaut
    Chaque INSERT et chaque UPDATE te coutera le double puisque tu feras une double maj. Ce n'est évidemment pas le top, mais ce n'est pas non plus ingérable. Perso, dans notre SI, nous avons quelques triggers qui doublent les majs (ex : maj d'une colonne d'une table qui entraine la maj de la même colonne dans une autre table) et cela ne pose aucun souci, y compris pour des batchs de masse.

    En résumé, c'est une solution qui rend service mais qui se doit d'être utilisée avec parcimonie !

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 52
    Points : 54
    Points
    54
    Par défaut
    oui et je suppose qu'en terme de temps de traitements vu que l on déjà sur l'enregistrement qu on va modifier ca doit être quasi transparent....ok..je vais étudier cette option...
    merci les gars (et les girls) pour vos réponses....

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

Discussions similaires

  1. [ MAPPY - VIA MICHELIN - etc ] - Champs MAJ automatiquement ?
    Par EFFLYINGJOKER dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 03/07/2009, 14h21
  2. Empêcher le remplacement d'un champs lors d'un update
    Par Freedolphin dans le forum Langage
    Réponses: 4
    Dernier message: 08/11/2007, 16h08
  3. Focus automatique d'un champ texte lors de sa création
    Par dragonfly dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 11/04/2007, 15h01
  4. Réponses: 6
    Dernier message: 31/03/2007, 16h07
  5. Réponses: 2
    Dernier message: 13/06/2006, 17h12

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