Re : Verrouiller un enregistrement via vb & odbc
Posted in 2000
Topics: Connectivity: ODBC / JDBC / .NET, Transactions, Locking & Isolation
Translated from English by DrWatson — View original
Rob Stevens a écrit : > > J'accède actuellement à une base de données Informix (Informix SE v.7.23) depuis VB via ODBC > (Informix Client SDK (pilote ODBC v. 3.31)). Ma question est la suivante : comment puis-je > verrouiller un enregistrement ? > > Je sais qu'ADO/ODBC gère le verrouillage des enregistrements lorsqu'on effectue une mise à jour, > mais j'aimerais verrouiller un enregistrement manuellement : est-ce possible ? Dans une transaction, ouvrez un curseur SELECT avec la clause FOR UPDATE. Selon le niveau d'isolation courant, cela entraînera le verrouillage soit de toutes les lignes extraites, soit uniquement de la ligne courante du curseur et de celles qui ont effectivement été mises à jour ou supprimées, et ce jusqu'à la validation de la transaction. Il n'existe pas de commande explicite de verrouillage de ligne en SQL. Art S. Kagel
Malheureusement, cela ne fonctionnera pas avec le pilote que vous avez indiqué utiliser. La version 3.31 du pilote Informix ODBC, et même la dernière version 3.32, suppriment la clause « For Update » de l'instruction SQL. Voir le bug n° 127780 -Brian Dans l'article <39A54BAB.26D65634@bloomberg.net>, kagel@bloomberg.net a écrit : > Rob Stevens a écrit : > > > > J'accède actuellement à une base de données informix (informix se v.7.23) depuis vb via ODBC > > (Informix client sdk (pilote odbc ver 3.31)). Ma question est la suivante : comment > > puis-je verrouiller un enregistrement ? > > > > Je sais qu'ado/odbc gère le verrouillage des enregistrements lorsque vous effectuez une mise à jour, > > mais j'aimerais verrouiller manuellement un enregistrement ; est-ce possible ? > > Au sein d'une transaction, ouvrez un curseur SELECT avec la clause FOR UPDATE. Cela > provoquera, selon le niveau d'isolation en cours, le verrouillage soit de toutes les lignes extraites, > soit uniquement de la ligne courante du curseur et de celles qui ont effectivement été mises à jour > ou supprimées, et ce jusqu'à la validation de la transaction. > > Il n'existe pas de commande explicite de verrouillage de ligne en SQL. > > Art S. Kagel > Envoyé via Deja.com http://www.deja.com/ Avant d'acheter.