1 min read

Controlling Locking Behavior With the SET_ISOLATION_LEVEL Command

SET_ISOLATION_LEVEL controls the locking and row versioning behavior of SQL statements issued by a connection.

Syntax

SET_ISOLATION_LEVEL OF <server> TO DEFAULT|READ_COMMITTED|READ_UNCOMMITTED|
REPEATABLE_READ|SERIALIZABLE|SNAPSHOT_LEVEL

Where

<server> : is the server name


DEFAULT:

is the default isolation level value set by the driver during the initializarion
SQLFlex: READ UNCOMMITTED
MySQLFlex: the default TRANSACTION ISOLATION LEVEL defined by the database


READ_COMMITTED:
Specifies that statements cannot read data that has been modified but not committed by other transactions. This prevents dirty reads. Data can be changed by other transactions between individual statements within the current transaction, resulting in nonrepeatable reads or phantom data.


READ_UNCOMMITTED:
Specifies that statements can read rows that have been modified by other transactions but not yet committed.


REPEATABLE_READ:
Specifies that statements cannot read data that has been modified but not yet committed by other transactions and that no other transactions can modify data that has been read by the current transaction until the current transaction completes.


SERIALIZABLE:
Specifies the following:

  • Statements cannot read data that has been modified but not yet committed by other transactions.
  • No other transactions can modify data that has been read by the current transaction until the current transaction completes.
  • Other transactions cannot insert new rows with key values that would fall in the range of keys read by any statements in the current transaction until the current transaction completes.


SNAPSHOT_LEVEL:
Specifies that data read by any statement in a transaction will be the transactionally consistent version of the data that existed at the start of the transaction. The transaction can only recognize data modifications that were committed before the start of the transaction. Data modifications made by other transactions after the start of the current transaction are not visible to statements executing in the current transaction. The effect is as if the statements in a transaction get a snapshot of the committed data as it existed at the start of the transaction.

 

Why Migrate from Btrieve to PostgreSQL and other Relational Databases?

Why Migrate from Btrieve to PostgreSQL and other Relational Databases?

Introduction Many independent software vendors (ISV) and corporate users still rely on applications that use a category of database collective called...

Read More
Four Challenges in Converting COBOL Applications from ISAM Databases to Relational Databases

Four Challenges in Converting COBOL Applications from ISAM Databases to Relational Databases

COBOL applications are the foundation of numerous essential business functions, especially within the banking, insurance, and government sectors....

Read More
Application Modernization 101: Ultimate Guide to Digital Transformation

Application Modernization 101: Ultimate Guide to Digital Transformation

Imagine breaking free from the constraints of old, monolithic systems and embracing the agility and innovation of cloud-based solutions.

Read More