繁体   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