Implicit Transactions in Sql Server



A transaction is a single unit of work. If a transaction is successful, all of the data modifications made during the transaction are committed and become a permanent part of the database else the changes will be rolled back. As we all know we use the following blocks to specify the start and end of the transaction.

  • Begin Tran –> Starting point
  • Commit Tran –> Ending point

An example for the same is given below.
Begin Tran
insert into Employee Values(1,’Roopesh’,’PL’,’IT’)
insert into Employee Values(2,’Lokesh’,’PM’,’IT’)
Commit Tran

In the above statement the TWO insert queries will be considered as ONE unit of work i.e transaction. Now let’s see what is Implicit Transactions.

If you do not mark the boundaries of a transaction explicitly, by default, SQL Server treats each individual statement as a transaction; in other words, by default, SQL Server automatically commits the transaction at the end of each individual statement. You can change the way SQL Server handles implicit transactions with a session option called IMPLICIT_TRANSACTIONS. This option will be set to OFF by default and we can change it to ON by using the following query.


When this option is on, you do not have to specify the BEGIN TRAN statement to mark the beginning of a transaction, but you have to mark the transaction’s end with a COMMIT TRAN or a ROLLBACK TRAN statement. This is called as Implicit Transactions. An example for the same is given below.

insert into Employee Values(3,’Roopesh’,’PL’,’IT’)
insert into Employee Values(4,’Lokesh’,’PM’,’IT’)
Commit Transaction

You can see in the above query the BEGIN TRAN is not used to tell the starting point of transaction and if you execute the same with out Begin Tran command it works just as fine as normal query with Begin Tran command. PFB the image showing the same.

In short, Implicit transactions are the ones for which the starting point of the transaction need not to be mentioned. To activate the same you have to set Implicit_Transactions property to ON as shown below.


That’s it guys !! Happie coding !!

Roopesh Babu V