none
Insert simultanés ?? RRS feed

  • Question

  • Bonjour,

     

    Je me retrouve avec un problème lors d'enregistrements dans une table.

    Ma requête est du type :

    insert into MaTable (monChamp1,...) values (dbo.MaFonction(),...)

     

    La fonction MaFonction() se base sur les 2 derniers enregistrements pour déterminer, selon un algorithme, le numéro du prochain enregisrement (celui de l'insert en cours)

    Pour exemple, mon algorithme est le suivant :

    différence entre les 2 derniers numéros (ID) enregistrés

    Si différence = 1 alors MaFonction retourne dernier ID + 2

    Sinon MaFonction retourne dernier ID + 1

     

    Or il se trouve que depuis quelques jours, je me retrouve avec plusieurs enregistrements contenant le même numéro.

    Comment cela peut se produire et comment éviter ce problème ?

    Je suppose que 2 requêtes INSERT sont exécutées au même moment (ou presque). La fonction MaFonction() située dans la 2ème requête est exécutée alors même que le 1er INSERT n'est pas encore effectué, d'où la génération du même numéro.

     

    La solution que j'envisage mais dont je ne suis pas sûr passe par l'utilisation d'un TRIGGER. En effet sur l'INSERT de ma table, le TRIGGER effectuerait un UPDATE de l'enregistrement en question par l'appel de MaFonction().

    Ce dont je voudrais être sûr, c'est que l'INSERT et le TRIGGER soient exécutés dans une même transaction avant toute autre exécution INSERT.

     

    J'espère avoir été assez clair.

    Quelqu'un aurait une réponse à m'apporter ?

     

     

    Merci d'avance
    mardi 17 juin 2008 09:20