Veja esta resposta Recuperar ID de linha inserido no SQL
Em suma, não há maneira de fazer isso entre bancos de dados, exceto MAX(ID) - mas isso não é um resultado garantido e tem muitas armadilhas, por exemplo.
- outras inserções podem ocorrer entre a última inserção e a consulta máxima
- não pode ser usado com tabelas de transações altas (max emitirá um bloqueio de leitura, métodos específicos de rdbms não leem de nenhuma tabela)
O padrão ANSI relacionado a identity/autonumber/auto_increment/sequences apareceu pela primeira vez em SQL:2003 aguardando implementação por todos os principais RDBMS. Provavelmente será semelhante a sequências Oracle/PostgreSQL.
Outra mudança no SQL:2003 é a
OUTPUT USING CLAUSE
mas há muito pouca informação sobre isso. O Sybase e o SQL Server fizeram coisas diferentes com ele, portanto, ainda não está claro como isso acontecerá. O SQL Server o implementa como INSERT INTO TBL(..)
OUTPUT inserted.identity_col
INTO @sometablevar
VALUES(..)