簡體   English   中英

基於條件的SQL UPDATE

[英]SQL UPDATE based on condition

我們需要使用用戶ID(NBK)更新表。 帶有NBK的表也具有用戶狀態(0-1),並且一次只有一個用戶將具有1。 面臨的挑戰是#1捕獲活動用戶#2與用戶NBK更新另一個表。 我希望下面的代碼只是有一個我找不到的簡單Syntex錯誤?

Dim nb As String
Dim NBK As String

nb = [Employees]![NBK] & "' WHERE "
nb = nb & " " & [Employees]![Status] = '1'
NBK = " Update tbl_DateTracking SET NBK = "
NBK = NBK & "'" & nb & "' WHERE "
NBK = NBK & "CaseId = '" & CaseId & "' AND OCC_Scenario = '" & OCC_Scenario & "' ;"

DoCmd.RunSQL nb
DoCmd.RunSQL NBK

這里有幾點注意事項:

  1. 您應該使用參數化查詢而不是字符串連接。 這樣可以防止/包含SQL注入和其他有關格式錯誤的輸入的問題。
  2. 理想情況下,您應該規范化數據庫,以便“活動用戶”不是用戶表上的字段。 當數據庫中有兩個用戶設置為“活動”時,會發生什么情況?

但是,使用此給定的架構,您將要使用子選擇查詢。 例如:

UPDATE tbl_DateTracking SET NBK=(SELECT NBK FROM Employees WHERE Status=1 LIMIT 1) WHERE CaseID=? AND OOC_Scenario=? 然后在通過CaseIdOOC_Scenario作為參數。

注意,我對VB或其與SQL的交互方式不熟悉。 上面只是一個示例,您必須將其應用到您的應用程序中並對其進行更改以使其起作用。 您構建和運行嵌套查詢的方式似乎也不起作用,因為您的第一個查詢不包含命令(我您可能希望使用SELECT會使用[]![]自動執行此操作[]![]語法?),並將其嵌套在第二個查詢中時,它不會被()包圍。 自身運行第一查詢也有,如果你包括它作為第二個一個子查詢沒有影響。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM