很多TSQL方面的书都告诉大家如何使用@@Identity 获取最新的自增列的最新值。网上的文章或杂志也一样这么说。但是你可能不知道,这可能在你的应用程序中引起一些你难以追踪到的bugs。@@Identity的使用可能是一件非常非常坏的事情,你最好在每一个案例中使用scope_identity()进行替代。
为什么呢?
@@Identity返回的是你当前连接最新创建自动编号的值。在你第一次使用的时候,它也许没有错,直到有人增加在了触发。如果这个触发引起了另外一个自动编号的创建,猜猜你在调用@@Identity时将会得到什么值呢?不好吧。而scope_identity()就非常好了,它能返回你想要的。