2014-03-04 70 views
0

我有一个空白表,我想下一步当前身份标识该表,如何获得当前恒等式一个空值或0的空白表

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

在这种情况下,它给下一步idnetity ID为2

它应该是1

+0

你是什么版本的SQL工作? – Amit

+0

你为什么要这个号码?当你获得这些信息时,它可能会过时(因为一个或多个连接可能会在你提出问题和能够对答案做任何事情之间执行一个或多个插入)。你想要解决什么实际问题? –

+0

我想在插入时获取下一个身份标识,但是如果表空白,那么它将给出2作为下一个身份标识,再次插入第一行之后它给予2作为下一个标识ID –

回答

1

根据文档:

当IDENT_CURRENT值是NULL(因为TA从不包含行 或已被截断),IDENT_CURRENT函数 返回种子值。

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

这意味着,实际上,如果你的种子是1,你插入第一行后得到IDENT_CURRENT()=1之前。

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

尤其你应该要小心,因为:

要谨慎使用IDENT_CURRENT来预测下一个产生 标识值。由于其他 会话执行的插入,实际生成的值可能与 IDENT_CURRENT plus IDENT_INCR不同。

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

0

NULLIF(IDENT_CURRENT( 'CityPhotoGallery'),1)

我认为这会为新表

+0

如果1行已经有身份证号,那么在这种情况下它也会给出零 –