sql/odbc - update a record without locking table, possible ?

Posted by croute on 12-Mar-2014 05:59

Hello,

When i update a record with "update pub.mytable set myfirstcolumn = 123 where pub.mytable.mysecondcolumn = 58945"

The error is "[DataDirect][ODBC Progress OpenEdge Wire Protocol driver][OPENEDGE]Failure getting table lock on table PUB.mytable."

Other users are connected to this table with ABL and lock many records but not the one i want to update.

 

Why ODBC need to lock the entiere table for update a single record ?

Can i only lock the record and not the table ???

 

(sorry for mistakes, English is not my native language)

 

Odbc connection on Windows, driver pgoe1024.dll

Isolation level: serializable

Openedge 10.2B05.

 

 

Posted by Rob Debbage on 12-Mar-2014 06:41

Hello,

I believe it's your isolation level - you have the highest level set (serializable) and this will inevitably lead to many record locks to prevent dirty reads, etc. For more information, please review to the SQL Development manual:

documentation.progress.com/.../dmsdv.pdf

Try with Read Committed instead.

Kind regards,

Rob

All Replies

Posted by Rob Debbage on 12-Mar-2014 06:41

Hello,

I believe it's your isolation level - you have the highest level set (serializable) and this will inevitably lead to many record locks to prevent dirty reads, etc. For more information, please review to the SQL Development manual:

documentation.progress.com/.../dmsdv.pdf

Try with Read Committed instead.

Kind regards,

Rob

Posted by croute on 13-Mar-2014 14:04

ok, I read pages 122-127.

I thought that the three isolation levels "read" did not allow updates, but in fact it relates only to the level "read uncommitted".

It seems to work well with the "read committed" level, I'll try it in production.

Thank you !

This thread is closed