devxlogo

Fine-tune batch updates with the Update Criteria property

Fine-tune batch updates with the Update Criteria property

When multiple clients perform batch updates against the same database table, ADO by default raises a conflict when different users modify the same field: in other words, if two users read the same record but modify different fields, no error occurs.

This behavior is very dangerous, and might lead to inconsistencies in the database. Fortunately, you can change this default action, through the Update Criteria dynamic property of the Recordset object. This property affects the fields used by ADO to locate the record to be updated. You can set this property to one of the following four values: 0-adCriteriaKey (ADO uses only the primary key), 1-adCriteriaAllCols (ADO uses all the columns in the Recordset), 2-adCriteriaUpdCols (the default, ADO uses the key and the updated fields), and 3-adCriteriaTimeStamp. (ADO uses a TIMESTAMP column, if available, otherwise uses adCriteriaAllCols.)

Because Update Criteria is a dynamic property, you set it through the Properties collection, as in the following example:

rs.Properties("Update Criteria") = adCriteriaTimeStamp

In general, setting this property to the value adCriteriaTimeStamp offers the best performance if the table includes a TIMESTAMP field; otherwise, this setting reverts to adCriterialAllCols, which is the least efficient of the group (although it’s also the safest one). Note that you don’t need to retrieve the TIMESTAMP field just to use the adCriteriaTimeStamp setting.

devx-admin

Share the Post: