Précédent   Forum des professionnels en informatique > Bases de données > DB2
DB2 Forum d'entraide technique sur la base de données DB2. Voir aussi -> Rubrique DB2
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/03/2011, 18h33   #1
Nouveau Membre du Club
 
Inscription : décembre 2007
Messages : 52
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 52
Points : 25
Points : 25
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
a tunar with no tune est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2011, 11h19   #2
Membre Expert
 
Patrick
Inscription : mai 2008
Messages : 821
Détails du profil
Informations personnelles :
Nom : Patrick
Âge : 42
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : mai 2008
Messages : 821
Points : 1 041
Points : 1 041
Il te faut utiliser un objet SEQUENCE.
Quelle plate-forme ?
Quelle version ?
Description de ta table...
K2R400 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2011, 14h00   #3
Membre Expert
 
Inscription : novembre 2004
Messages : 1 298
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 1 298
Points : 1 355
Points : 1 355
On peut faire ceci également avec un trigger sur la table concernée.
Mercure est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2011, 15h15   #4
Membre actif
 
Inscription : juin 2008
Messages : 146
Détails du profil
Informations personnelles :
Âge : 44

Informations forums :
Inscription : juin 2008
Messages : 146
Points : 183
Points : 183
En phase avec Mercure.

Code :
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...
pdz74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2011, 16h13   #5
Nouveau Membre du Club
 
Inscription : décembre 2007
Messages : 52
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 52
Points : 25
Points : 25
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
a tunar with no tune est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2011, 16h30   #6
Membre actif
 
Inscription : juin 2008
Messages : 146
Détails du profil
Informations personnelles :
Âge : 44

Informations forums :
Inscription : juin 2008
Messages : 146
Points : 183
Points : 183
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 !
pdz74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/03/2011, 09h54   #7
Nouveau Membre du Club
 
Inscription : décembre 2007
Messages : 52
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 52
Points : 25
Points : 25
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....
a tunar with no tune est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h13.


 
 
 
 
Partenaires

Hébergement Web