Select statement is locking a record

progress-database

We have a process which selects a record from a progress table, then issues an update against that record.

If we do not do the select, then the update works all day long. If we do the select, then the update times out.

The select query is pretty simple and looks like:

select fg."alphakey", n."first-name", n."last-name"
from pub.name n
inner join pub."family-guardian" fg
  on (fg."name-id" = n."name-id")
where fg."alphakey" = 'somevalue'

We've confirmed that if the above statement is not present then it works. However, if the above statement is present then the UPDATE fails. The update goes against the name table. Unfortunately, I don't have that code as it executes through a third party.

Two questions:

  • Is this normal for progress?
  • What is the best way to get around the issue?

Best Answer

If dirty reads is not an issue in this scenario, you could try the table hint readuncommitted or nolock..

pub.name n WITH(NOLOCK)

join pub.[family-guardian] fg WITH(NOLOCK)