ADO verrou sur une ligne d'une table

ADO verrou sur une ligne d'une table - SQL/NoSQL - Programmation

Marsh Posté le 31-10-2005 à 17:54:46    

dans un procedure g ceci
 

Code :
  1. int givenewitem()
  2. {
  3.    rs.open ("select somevalue from table where ligne=7685" )
  4.    ....
  5.    newvalue=somevalue+1
  6.    .....
  7.    cmnd("update table set somevalue=newvalue" );
  8.    return newvalue;
  9. }


 
qui consiste a aller incrementer la valeur dune ligne dune table, le probleme c que plusieurs utilisateurs peuvent lancer la procedure en mm temps ce qui complique tout  [:pingouino]  
 
ex: user1 fait le select , user2 fait aussi un select juste apres (et recupere les donnée non update du 1)
 
le must ca serait de pouvoir locker le record des que le select est fait comme ca les autres attendent et sont bloques jusqu'a l'update
 
 
 
une autre solution serait de faire lupdate dun coup : update set somevalue=somevalue+1 where.... mais ce nest pa possible puisque je doit retourner la derniere valeur  :o  
 
jai deja regarde du cote des verrous fournis par ADO mais aucun ne me satisfait  :(  
 
adLockReadOnly (= 1)

Valeur de LockType
 
 
Signification
 
adLockReadOnly (= 1)
 
 
Verrouillage en lecture seule : les données ne peuvent pas être modifiées. C'est la valeur par défaut.
 
adLockPessimistic (=2)
 
 
Verrouillage pessimiste : les enregistrements sont verrouillés dans la source de données dès qu'ils sont modifiés. Dès qu'un champ est modifié (rs.Fields("" ).Value = x), ce type de verrouillage empêche une autre tâche d'acquérir un verrou partagé ou exclusif: l' enregistrement est verrouillé, et donc inaccessible en lecture/écriture ou en mode exclusif depuis un autre Recordset. Si un verrouillage de type pessimiste est utilisé au sein d'une transaction, le verrou est maintenu jusqu'à la fin de la transaction.
 
adLockOptimistic (=3)
 
 
Verrouillage optimiste : les enregistrements sont verrouillés le plus tard possible dans la phase de mise à jour, c'est-à-dire lorsque la méthode Update est utilisée. La méthode Update met à jour les enregistrements dans la source de données. Lors de la phase d'édition des données, les enregistrements ne sont pas verrouillés. Ce type de verrouillage est le plus fréquemment utilisé.
 
Tous les fournisseurs OLEDB ne fournissent pas forcément ce type de verrouillage. Il est cependant supporté par le fournisseur OLEDB pour SQL Server, par exemple.
 
adLockBatchOptimistic (=4)
 
 
Ce type de verrouillage est utilisable uniquement avec un curseur côté client. Il permet de faire de la mise à jour par lot. Si avec un tel recordset, la méthode Update est utilisée, seules les données se trouvant dans l'objet Recordset sont mises à jour. Les données réelles de la base de données sont mises à jour lors de l'appel à la méthode UpdateBatch. La méthode UpdateBatch est également utilisée lors de l'utilisation d'un Recordset déconnecté.


Message édité par red faction le 31-10-2005 à 18:34:13
Reply

Marsh Posté le 31-10-2005 à 17:54:46   

Reply

Marsh Posté le 01-11-2005 à 11:49:56    

[:yoyoz]

Reply

Marsh Posté le 01-11-2005 à 12:17:45    

Personne n'a jamais fait d'ADO [:dawa] ?


Message édité par red faction le 01-11-2005 à 12:17:57
Reply

Marsh Posté le 01-11-2005 à 18:50:32    

http://forum-images.hardware.fr/icones/message/icon15.gif

Reply

Marsh Posté le 03-11-2005 à 12:15:26    

http://users.skynet.be/polo021/bigbrother01.gif

Reply

Marsh Posté le 05-11-2005 à 01:14:29    

:o

Reply

Marsh Posté le 05-11-2005 à 19:02:43    

[:red faction]

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed