When the users of SQL Server stores data in table of their database, they use an identity column as primary key. The identity column will increase its value automatically whenever new row is added. However, in some cases users may need to determine the last inserted record in database. The blog will be explaining some of the possible ways on how to find the last inserted record in SQL Server.
Determine Last Inserted Record in SQL Server
While we work with the table in SQL Server database, we set identity column that act as an auto increment column in table to increase column ID value whenever new record is inserted. Suppose we want to insert a name of the employee in the table ‘Employees’, we will do that using the below command:
INSERT INTO Employees (FirstName) VALUES (‘Mellisa’)
Now, in order to get the lasted inserted record ID, we can use the following options:
- SELECT @@IDENTITY
- It returns the last IDENTITY value produced on a connection, regardless of the table that produced the value and of the scope of the statement that produced the value.
- It is used to give the last identity value generated by the statement.
- If the statement did not affect any tables with identity columns, this command returns NULL
- If the table contains multiple rows generating multiple identity values, @@IDENTITY returns the last identity value generated.
- Though @@IDENTITY is limited to current session, it is not limited to current scope. Even if trigger on the table caused identity to be created, you will get identity that was last created, even if it is a trigger.
- SELECT SCOPE_IDENTITY()
- As the name suggests, it will return the last identity produced on a connection and by statement in same scope, regardless of the table that produced the value.
- It is limited to the current scope and in current session as well.
- It will return the last identity that was explicitly created, rather than any identity created by trigger or user-defined function.
- SELECT IDENT_CURRENT(‘TableName’)
- It returns the last identity value produced in a table, regardless of the connection and the scope of the statement that created the value.
- It is not limited by scope and session but is limited to a specified table.
- It will return the identity value generated for the specific table in any session or any scope.
In the blog, we have discussed about some of the approaches through which we can find the last inserted record in SQL Server database. Among the methods SCOPE_IDENTITY() is recommended as it avoids the potential issues associated with addition of trigger while returning identity of the recently inserted record. The manual methods of determining last inserted record using these commands may sometimes be time taking and difficult for non-technical users. One of the easy alternative for the same purpose is to use a third party tool to view SQL Server transaction log that is used to read and analyze SQL Server Log File transactions that will give detailed analysis of all transactions like insert, delete, update etc.