如何准确获得标识值
作者: Echo, 出处:IT专家网, 责任编辑: 李书琴,
2008-01-04 11:52
【IT专家网独家】问题:
在向一个含有标识列的数据库表里插入行的时候,我需要获得插入行后数据库引擎生成该行的标识值。我怎么样才可以准确获得这个标识值呢?
专家解答:
SQL Server有三种不同的函数可以用来获得含有标识列的表里最后生成的标识值:
- @@IDENTITY
- SCOPE_IDENTITY()
- IDENT_CURRENT(‘tablename’)
以上三个函数都可以返回数据库引擎最后生成插入标识列的值。但是,根据插入行的范畴(或者来源,例如:存储过程或触发器)以及插入该行的连接不同,这三个函数在功能上也有所不同。
@@IDENTITY函数可以返回所有范围内当前连接插入最后所生成的标识值(即包括任何调用的存储过程和触发器)。这个函数不止可以适用于表。函数返回的值是最后表插入行生成的标识值。
SCOPE_IDENTITY()函数跟上一个函数几乎是一摸一样的,只有一个不同的地方:即前者返回的值只限于当前范围(即执行中的存储过程)。
最后是IDENT_CURRENT函数,它可以用于所有范围和所有连接,获得最后生成的表标识值。跟前面两个函数不同的是,这个函数只用于表,并且使用tablename作为一个参数。
我们可以举实例来演示上述函数是如何运作的。
首先,我们创建两个简单的例表:一个代表客户表,一个代表审计表。创建审计表的目的是为了跟踪数据库里插入和删除信息的所有记录。

- 本文关键词:

