如何为空白表获取当前标识值为空或0

时间:2014-03-04 07:22:24

标签: sql sql-server

我有一张空白表,我想获得该表的下一个当前身份标识,

Select IDENT_CURRENT ('CityPhotoGallery') + IDENT_INCR('CityPhotoGallery')

在这种情况下,它将Next idnetity ID设为2

应该是1

2 个答案:

答案 0 :(得分:1)

根据文件:

  

当IDENT_CURRENT值为NULL时(因为表从不   包含行或已被截断的IDENT_CURRENT函数   返回种子值。

http://technet.microsoft.com/en-us/library/ms175098.aspx

这意味着,如果您的种子为1,则之前的插入第一行之后的都会IDENT_CURRENT()=1

即使我同意您应该在更高级别描述您想要达到的目标,但在这种情况下,如果表格为空,则需要CASE WHEN来考虑。

特别是,你应该小心,因为:

  

使用IDENT_CURRENT预测下一次生成时要小心   身份价值。实际生成的值可能不同于   IDENT_CURRENT加上IDENT_INCR,因为其他人执行了插入操作   会话。

http://technet.microsoft.com/en-us/library/ms175098.aspx

答案 1 :(得分:0)

NULLIF(IDENT_CURRENT('CityPhotoGallery'),1)

我认为它适用于新表