J'utilise iBatis/Java et Postgres 8.3. Quand je fais une insertion dans ibatis j'ai besoin de l'id retourné.
J'utilise le tableau suivant pour décrire ma question:
CREATE TABLE sometable (id serial NOT NULL, somefield VARCHAR(10));
La séquence sometable_id_seq
obtient en exécutant AutoGénéré l'instruction create.Problèmes de simultanéité lors de la récupération des ID des lignes nouvellement insérées avec ibatis
Au moment j'utiliser la carte sql suivante:
<insert id="insertValue" parameterClass="string" >
INSERT INTO sometable (somefield) VALUES (#value#);
<selectKey keyProperty="id" resultClass="int">
SELECT last_value AS id FROM sometable_id_seq
</selectKey>
</insert>
Il semble que ce soit la façon ibatis de récupérer l'ID nouvellement inséré. Ibatis exécute d'abord une instruction INSERT et demande ensuite la séquence du dernier identifiant.
J'ai des doutes que cela fonctionnera avec beaucoup d'insertions concurrentes.
Cela pourrait-il causer des problèmes? Comme retourner l'identifiant du mauvais insert?
(Voir aussi ma question connexe sur how to get ibatis to use the INSERT .. RETURING .. statements)
Alors vous pensez que cela va causer des problèmes. Mon autre question est de savoir comment obtenir la déclaration INSERT INTO .. RETOUR .. en ibatis (Depuis que je ne peux pas poster un lien ici, je l'ai ajouté à la fin de la question) – Christoph
Bien sûr que ce sera le cas. essayez-vous avec 2 connexions de psql. comme pour ibatis - je n'ai aucune idée de ce que c'est, mais ça a l'air java - ce qui veut dire que je ne peux rien faire. –