Bonjour,
Je ne jamais écrit de Trigger et je souhaite simplement mettre une valeur à "0" dans toutes les lignes d'une colonne si une autre colonne dans la même table passe à la valeur 1 sur une des lignes. Je suis sous Oracle 10g.
Merci.
Bonjour,
Je ne jamais écrit de Trigger et je souhaite simplement mettre une valeur à "0" dans toutes les lignes d'une colonne si une autre colonne dans la même table passe à la valeur 1 sur une des lignes. Je suis sous Oracle 10g.
Merci.
Tu as lu la doc ?
http://download.oracle.com/docs/cd/B...htm#sthref7885
Before insert ? Before update ?
Il s'agit juste d'une syntaxe, et d'un test.
Nicolas.
Nicolas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 create or replace trigger my_trigger before update on my_table for each row begin if :new.col1=1 then :new.col2:=0; end if; end; /
Bonjour,
Voici un exemple :
ID COL1 COL2
-- ----- -----
1 1 1
2 0 1
3 0 1
4 0 1
5 0 1
update table set COL1='0' where id='1'
ID COL1 COL2
-- ----- -----
1 0 0
2 0 0
3 0 0
4 0 0
5 0 0
Donc si on passe un des champs à 0 sur COL1 je souhaiterais que tous les champs dans COL2 passent à 0.
Merci NGasparotto, je vais tester mais je ne sais pas si toutes les colonnes seront mises à jour ???
Bon, basiquement les triggers ne permettent pas de faire ce que tu veux, parce qu'il s'agit d'un update d'une table que tu es en train d'updater (error mutating trigger).
Il y aurait bien des possiblites, avec autonomous trigger (voir ici), mais crois moi, les triggers ne sont pas prevus initialement pour cela, puis c'est rendre le code assez complique (notemment maintenance), donc il est vraiment mieux d'integrer ce genre de chose au niveau du code applicatif plutot qu'au niveau de trigger base.
Nicolas.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager