Bonjour à tous !

Je travaille sur une application php qui attaque une base de données HyperFileSql (© PCSoft).

En fait, à un moment, je dois ajouter un enregistrement dans une de mes tables dont l'identifiant est auto-incrémenté.

Mon énoncé est le suivant : comment récupérer cet identifiant sachant qu'il peut y avoir environ 500 utilisateurs connectés en même temps ? D'après mes recherches, aucune instruction php ne permet de faire ça de la même manière que mysql_insert_id.

J'ai donc essayé de trouver une solution alternative : la transaction.

Premièrement (en théorie) : Dans une transaction, si je fais un ajout dans ma table, puis un select max(id), le contexte de la transaction fait que personne n'aura le même id, même si l’exécution est faite en simultanée, exact ? Si ce n'est pas le cas, autant que j'arrête tout de suite de travailler sur cette solution... Qu'en pensez-vous ?

Deuxièmement (en pratique) : Lorsque je lance un début de transaction avec la commande php odbc_autocommit(self::$Connexion, false), il me renvoie vrai (signifiant donc qu'une transaction démarre).
Ensuite, je fais un insert, puis un select max(id).
Enfin, je lance la fin de transaction avec la commande odbc_commit(self::$Connexion);odbc_autocommit(self::$Connexion, true); (la deuxième instruction sert à remettre l'autocommit pour mes requêtes classiques).

Jusque là tout va bien, l'enregistrement est bien créé et je récupère bien l'identifiant voulu. Seulement, étant tout seul à travailler sur l'application pour le moment, je ne peux voir pour le moment si la transaction s'exécute bien dans un contexte particulier donc pour tester cela, j'ai essayé de faire un odbc_rollback(self::$Connexion); pour voir si l'enregistrement ne se crée pas, comme il le devrait. C'est là qu'est mon problème, la ligne dans ma table a été créé, malgré le rollback (annulation des requêtes depuis le début de la transaction).
Et franchement, je ne comprends pas pourquoi... Avez-vous une idée ?

Merci d'avance !!