According to Pat Wendorf:
{{{"In the insert function you're using @@IDENTITY to get the last inserted row id from the server. Since SQL 2k, SCOPE_IDENTITY() has been the right way to do this."
"You won't see this problem until you add a trigger to a table that does an insert to another table with an identity column. In this case @@IDENTITY would return the id for the new row that was inserted in the table in the trigger, not the row that you inserted into the original table."
"SCOPE_IDENTITY() is a drop in replacement for @@IDENTITY, but it will not work on SQL 7.0 or lower."}}}
While supporting databases with triggers isn't exactly a priority, it's probably best to alter the adapter to use the correct technique, maybe reverting to the older technique for older databases.