2015-12-14 34 views
0

試圖獲取活動用戶在Access數據庫中提交的最後一個票證ID。除非我自己在「SELECT @@ IDENTITY」中保留WHERE子句,否則這是行不通的。我怎樣才能使它與WHERE子句一起工作?在Access中選擇@@ IDENTITY Where

 'Pulls the last submitted ticket ID, and makes sure it was submitted by the active user to prevent a race condition scenario among multiple users 
    Dim returnvalue As Integer = -1 
    Dim custCMD As OleDb.OleDbCommand = New OleDb.OleDbCommand("SELECT @@IDENTITY WHERE [Last Modified By] = '" & Environment.UserName & "';", connection) 


    returnvalue = CType(custCMD.ExecuteScalar(), Integer) 


    MsgBox(returnvalue) 
+2

您不能在這裏使用WHERE子句。無論如何,它的目的是什麼? – Steve

+0

由於如果兩個用戶連接到數據庫時可能會出現問題,他們都會獲得最近的票證。我希望它返回當前用戶提交的最近的票證ID。 – user5480156

回答

1

因爲命令返回最後生成的自動編號與您的命令相關聯的連接不需要在SELECT @@ IDENTITY WHERE子句。與其他連接在其他PC上或其他應用程序的其他實例上運行時沒有競爭狀態。不確定多個線程,但如果您按照最佳做法打開/使用/關閉連接,那麼您在安全方面

+0

好的,謝謝這就是我想要確保的。基本上只要多個用戶同時運行這個程序並連接到數據庫,並且他們都同時提交提交,只要它返回每個相應的票證ID,那麼一切都很好。 – user5480156