日期:2014-05-17  浏览次数:20691 次

关于sqlserver2008列的自动增长
有几种方式可以设置列的自动增长?除了IDENTITY(1,1)之外,还有别的吗?

最重要的是:insert一条数据以后,怎么返回这个字段的值?
我看到了好几种,不知道哪一个最安全、准确:
IDENT_CURRENT 函数返回为任何会话和任何作用域中的特定表最后生成的标识值。
@@IDENTITY 返回为当前会话的所有作用域中的任何表最后生成的标识值。
SCOPE_IDENTITY 返回为当前会话和当前作用域中的任何表最后生成的标识值。


谢谢大家!

------解决方案--------------------
1.一般来说,使用identity(int,1,1)或手工设置自增列.

2.如果是多用户操作,哪个都不安全.所以我从来不用所谓的自增列.

------解决方案--------------------
1. IDENTITY(1,1)可以设置自动增长. NEWSEQUENTIALID ()创建大于先前通过该函数生成的任何 GUID 的 GUID

2. 你插入一条数据以后,马上用 SCOPE_IDENTITY来获取插入的值.
------解决方案--------------------
SCOPE_IDENTITY 返回为当前会话和当前作用域中的任何表最后生成的标识值。

这个得到刚刚插入的自增值

其他的也应该会有其他用处
------解决方案--------------------
没有吧。。。
------解决方案--------------------
探讨
SCOPE_IDENTITY 返回为当前会话和当前作用域中的任何表最后生成的标识值。
100%安全么

------解决方案--------------------
安全是指返回的值有可能不是当时增加的那条记录的值是不?
如果是这样的话,那还真不安全。除非提高数据库的隔离等级。或者自己写一个自动增长列了。
------解决方案--------------------
IDENTITY(1,1)
------解决方案--------------------
自动生成标识列

------解决方案--------------------
探讨
引用:

安全是指返回的值有可能不是当时增加的那条记录的值是不?
如果是这样的话,那还真不安全。除非提高数据库的隔离等级。或者自己写一个自动增长列了。
我说的安全就是这个意思。当很多用户同时插入的时候,返回的值有没有可能不是当时增加的那条记录的值。如果插入和返回值都是放在一个存储过程里的,这样是不是100%的安全?

------解决方案--------------------
探讨
引用:
SCOPE_IDENTITY 返回为当前会话和当前作用域中的任何表最后生成的标识值。
100%安全么

学习了,最近也想学习下这个,但是时间安排不过来.先复制下来研究下,想把mysql的数据库 装饰设计交流论坛转换到mssql 

------解决方案--------------------
学习了。。。。。。。。。。。