2010-08-19 64 views

回答

1

這兩個SQL語句都是有效的,只有一個例外。更改

"SCOPE_IDENTITY()" 

"SELECT SCOPE_IDENTITY()" 

兩者之間的區別是,@@identity變量包含SQL Server(全球視野)在最近的標識值。 SCOPE_IDENTITY()函數返回最近的本地身份。

你可以在SCOPE_IDENTITYhere找到更多。

+0

什麼是本地身份? – 2010-08-19 21:58:43

+0

本地標識代表批次或過程範圍內的標識值。 – bobs 2010-08-19 21:59:56

+1

不完全。 @@ identity不是全局的,但是對於運行它的實際查詢來說,它不會給出一些其他查詢的標識,這些查詢在毫秒之後和@@標識的調用之前發送。但它會給你錯誤的答案,不應該被使用,因爲它會提供你的查詢引起的事件鏈中的最後一個身份,或者引發一個觸發器中產生的身份,而這個身份不是你想要的身份。 @@ Identity shoudl永遠不會用於查找您剛剛在SQL Server中插入的身份值 – HLGEM 2010-08-19 21:59:57

0

如果您在詢問T-SQL的一面,那麼您應該只能使用相同的語句(即'SELECT @@ identity')。

+1

從來沒有使用@@身份 – HLGEM 2010-08-19 21:57:12

+0

你是對的;它按原樣工作,但這不是最佳實踐。 – Geoff 2010-08-19 22:22:16