C’est une question que l’on peut se poser, même si la réponse
parait évidente, nous ne sommes pas à l’abri d’éventuelles
surprises. Verdict à la fin de ce post !
C’est d’ailleurs une question que l’on s’est posée, autour de la
machine café, et qui du coup a fait l’objet d’un petit exercice
avec Oracle, SQL Server, MySQL et Sybase… Bon, je vous rassure,
nous ne faisons pas que parler bases de données pendant les
pauses café mais ça arrive, parfois.
Place aux tests : Un trigger fait-il parti d’une transaction ?
Test Oracle :
SQL > create table t2 ( cnt int );
SQL > insert into t2 values ( 0 );
SQL > commit;
SQL > create table t ( x int check ( x>0 ) );
SQL > create trigger t_trigger
before insert or delete on t for each row
begin
if ( inserting ) then
update t2 set cnt = cnt +1;
else
update t2 set cnt = cnt -1;
end if;
dbms_output.put_line( 'I fired and …
[Lire plus]