@@IDENTITY
returns the last identity column value created on a connection, regardless of the scope. That means it could return the
last identity value you produced, or it could return a value generated by a user defined function or trigger, possibly one fired because of your
insert. In order to access the last identity value created in your scope, use SCOPE_IDENTITY()
instead.
Noncompliant code example
INSERT ...
SET @id = @@IDENTITY -- Noncompliant
Compliant solution
INSERT ...
SET @id = SCOPE_IDENTITY()