我目前從調用VBA SELECT @@身份在MySQL:如何在sql server中使用SELECT @@ identity?
Set rs = cn.Execute("SELECT @@identity", , adCmdText)
但由於我要與SQL Server數據庫,而不是MySQL的合作,我想知道如何使這個說法SQL-服務器友好型
它只是Set rs = cn.Execute("SCOPE_IDENTITY()", , adCmdText)
?
我目前從調用VBA SELECT @@身份在MySQL:如何在sql server中使用SELECT @@ identity?
Set rs = cn.Execute("SELECT @@identity", , adCmdText)
但由於我要與SQL Server數據庫,而不是MySQL的合作,我想知道如何使這個說法SQL-服務器友好型
它只是Set rs = cn.Execute("SCOPE_IDENTITY()", , adCmdText)
?
這兩個SQL語句都是有效的,只有一個例外。更改
"SCOPE_IDENTITY()"
到
"SELECT SCOPE_IDENTITY()"
兩者之間的區別是,@@identity
變量包含SQL Server(全球視野)在最近的標識值。 SCOPE_IDENTITY()
函數返回最近的本地身份。
你可以在SCOPE_IDENTITY
here找到更多。
什麼是本地身份? – 2010-08-19 21:58:43
本地標識代表批次或過程範圍內的標識值。 – bobs 2010-08-19 21:59:56
不完全。 @@ identity不是全局的,但是對於運行它的實際查詢來說,它不會給出一些其他查詢的標識,這些查詢在毫秒之後和@@標識的調用之前發送。但它會給你錯誤的答案,不應該被使用,因爲它會提供你的查詢引起的事件鏈中的最後一個身份,或者引發一個觸發器中產生的身份,而這個身份不是你想要的身份。 @@ Identity shoudl永遠不會用於查找您剛剛在SQL Server中插入的身份值 – HLGEM 2010-08-19 21:59:57