Using holdlock, noholdlock, or shared

You can override a session’s locking level by applying the holdlock, noholdlock, and shared options to individual tables in select or readtext commands:

Level to use





Do not hold locks until the end of the transaction; use from level 3 to enforce level 1

2, 3


Hold shared locks until the transaction completes; use from level 1 to enforce level 3



Applies shared rather than update locks for select statements in cursors open for update

These keywords affect locking for the transaction: if you use holdlock, all locks are held until the end of the transaction.

If you specify holdlock in a query while isolation level 0 is in effect for the session, Adaptive Server issues a warning and ignores the holdlock clause, not acquiring locks as the query executes.

If you specify holdlock and read uncommitted, Adaptive Server prints an error message, and the query is not executed.