VCursor lock question

Fran=?ISO-8859-1?B?5w==?=ois Van Lerberghe frvanlerberghe at gmail.com
Sat Oct 5 01:59:56 CDT 2013


Hello,

I have a procedure where I update every record of a table (5000 records). In
order to do that, I make a VCursor with EVLokType.kReadWrite on the whole
table.
At the end of this procedure, I call another procedure to update a few
records (50) of that same table. This update is in another procedure because
it is called by some other places of the project. How must I deal with the
records locking in this second Vcusor using the same table, but not the same
records ?

1) If I nil the first Vcursor (locking the whole table) before create the
second, locking the needed records, I have a risk (very low I know, but that
exist) that, just before I create my second Vcursor, another user lock some
records of that table, reading or writing incorrect data and stopping me to
complete the work.

2) Must I keep the first Vcursor ensuring that nobody can modify the table
and create the second with kNoLock ? Is it safe to update the records in
this second Vcursor ?

3) I see a third option : Keeping the first cursor. I pass this Vcursor as
parameter to iterate, test each record and update the records that meet some
condition. I don't like this option as
- I prefer sending a second SQL query to retrieve the needed records rather
than iterate and test each record
- this second procedure is called by some other places of the project

I prefer the second option if it is safe. Could you be kind enough to give
me your advice on this ?

François Van Lerberghe
Rue Thier Monty, 15 A
4570 Marchin
Belgium



More information about the Valentina mailing list