PHP et Oracle - PHP - Programmation
Marsh Posté le 22-01-2009 à 08:56:28
bon j ai une sequence et un trigger pour simuler lle auto increment
Help Help
Marsh Posté le 22-01-2009 à 09:27:16
Si c'est une séquence, on peut obtenir le numéro en cours en faisant
select une_sequence.currval from dual; |
Marsh Posté le 22-01-2009 à 09:47:23
ouep mais si j ai des insertions concurrentes ?
y a probleme , je risque d avoir l id d un autre enregistrement?
Marsh Posté le 22-01-2009 à 09:55:36
Très bonne remarque. C'est pour cela que dans de nombreuses entreprises où j'ai travaillé, on utilisait une table à part, avec un champ conservant un numéro, qui simulait une séquence. Mais c'était avec des vieilles versions d'Oracle. Peut-être qu'il y aurait une astuce avec les nouvelles versions, en dehors des curval et nextval de base. Je ne sais pas.
Marsh Posté le 22-01-2009 à 12:58:40
schum-hacker a écrit : ouep mais si j ai des insertions concurrentes ? |
à mon ex boulot, on avait une séquence par table, comme ça pas de risque d'ambiguité
Marsh Posté le 23-01-2009 à 16:00:06
masequence.currval retourne la dernière valeur générée par masequence.nextval dans LA session en cours.
Faites le test pour voir.
Même si une autre session fait un masequence.nextval, pour la première session masequence.currval ne change pas.
D'ailleurs, masequence.currval n'est pas défini dans la première session avant une lecture de masequence.nextval !
M'enfin autant faire les choses bien :
1- Une séquence par table ! Par exemple SEQ_NomDeTable.
2- Pas de "clé primaire automatique avec un trigger", mais :
Code :
|
3- Si on veut la valeur de l'ID, on le récupère avant:
Code :
|
et on s'en sert ensuite pour l'INSERT.
Marsh Posté le 21-01-2009 à 17:49:24
Bonjour,
je fais des insertions dans une table oracle
avec une clé primaire automatique : un trigger qui la prend dans une séquence
je voudrais récupérer l'id généré (un peu dans le genre de mysql_insert_id)
MERKI