[阅读: 523] 2005-12-08 15:36:06
sql server 自增字段,插入一条记录后如何获得当前插入记录的自增字段的值?
经过实验,得如下结论:
select DISTINCT @@IDENTITY as iden from FaWen
解释:上述语句对 SQL SERVER 的一个会话,也就是一条连接,返回该连接最后一条插入记录得到的自增字段的值。
假设有3个程序,分别连接SQL SERVER,有三个连接。3个程序都向同一个表依顺序插入数据,得到的值分别是1、2、3,那么,只要3个程序对SQL的连接还保持着,第一个程序使用上述语句,将得到1,而不是3,第二个程序将得到2,也不是3。第三个程序得到3。
因此,用上述语句可以得到自己刚才插入记录的自增字段的值,不怕其它程序的并发插入操作。
上述语句中,使用 DISTINCT 的原因是,虽然返回的值是当前连接插入操作得到的最大值,但返回的相同值的记录有多条。条数等于当前多个连接一共插入的记录数。
实验方法:启动三个 Query analyzer 查询分析器,分别执行插入操作后再做上述取自增字段值的操作。