Bonjour,
Je viens à vous suite à un problème que je n'arrive pas à résoudre.
Pour shematiser de facon simple(j'ai effectué un test avec ce cas la)
Je définie une table t1 toute simple contenant un Identifiant c1 etant un nombre et une cle primaire.
Volontairement, cette clé n'est pas en auto-increment.
je souhaite donc lancer deux insertions simultanées.
Auto commit à off.
En version simplifié la requete donne :
Requete req = insert into t1 select nvl(max(C1),0)+1 from t1;
Je lance donc cette requete deux fois, la premiere s'execute, la deuxieme est en attente de la fin de la premiere transaction.
Lors du commit de la premiere transaction il en résulte une erreur de cle primaire sur la deuxieme transaction.
J'ai fait différent test en modifiant "isolation level" jusque serializable ou en faisant un lock de la table en mode exclusif, cela ne marche tjs pas.
Je n'arrive donc pas a resoudre ce probleme.
Résultat attendu si il y a un element x dans la table, alors en executant les deux requetes simultanément je me retrouve avec x+1 et x+2
Merci d'avance.
Partager