Rollback On crée la table tran CREATE TABLE tran (a number(5),b varchar2(5),constraint pk_tran primary key(a)); INSERT INTO tran values(1,'ABC'); -- Dans la premiere session INSERT INTO tran values(2,'DEF'); -- Dans la premiere session SELECT * FROM tran -- Dans les deux sessions ROLLBACK -- Dans la premiere session -- L'annulation est bien effectuee Le "select" ne trouve plus de lignes dans la premiere session Point de reprise INSERT INTO tran values(1,'ABC'); commit; INSERT INTO tran values(2,'DEF'); savepoint jalon1; INSERT INTO tran values(3,'GHI'); select * from tran; -- Dans les deux sessions Le select prend les 3 lignes créées dans la première session et seulement la première dans la deuxième. rollback to savepoint jalon1; select * from tran; -- Dans les deux sessions commit; -- Dans la première session select * from tran; -- Dans les deux sessions On constate que le commit valide la 2ème ligne dans la deuxième session. Deadlock / Etreinte fatale DROP TABLE tran; -- delete from tran where b like'%'; CREATE TABLE tran (a number(5),b varchar2(5),constraint pk_tran primary key(a)); INSERT INTO tran values(1,'ABC'); INSERT INTO tran values(2,'DEF'); commit; UPDATE tran SET b='123' WHERE b='ABC'; -- ou UPDATE tran SET b='123' WHERE a=1; -- session 1 UPDATE tran SET b='456' WHERE a=2; -- session 2 UPDATE tran SET b='IJK' WHERE a=2; -- session 1 UPDATE tran SET b='KLM' WHERE a=1; -- session 2 SELECT * FROM tran -- session 1 commit; -- session 1 SELECT * FROM tran -- sessions 1 & 2