2014-03-04 72 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行已經有身份證號,那麼在這種情況下它也會給出零 –