@@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.
Bad Example:
INSERT ... SET @id = @@IDENTITY -- Noncompliant
Good Example:
INSERT ... SET @id = SCOPE_IDENTITY()