【问题标题】:Is it possible to INSERT INTO and UPDATE the same row in MS Access?是否可以在 MS Access 中插入和更新同一行?
【发布时间】:2016-02-17 22:06:01
【问题描述】:

假设我想用来自tInput 的数据在tLogs 中添加一个新行INSERT INTO。在同一个查询中,我想在tLogsUPDATE 一个名为Action 的列,该列在tInput 中不存在。下面的例子说明:

____________tLOGS____________       _____tInput____
| id | pid | A | B | Action |       | pid | A | B |
|    |     |   |   |        |       |  1  | 0 | 0 |

所需的查询将导致:

____________tLOGS____________       _____tInput____
| id | pid | A | B | Action |       | pid | A | B |
|  1 |  1  | 0 | 0 |  Add   |       |  1  | 0 | 0 |

在我的实际应用程序中,我有数百列,因此实际上我无法输入每一列。我正在寻找一个通用命令。

是否可以在同一个查询中同时执行 INSERT INTO 和 UPDATE ?这样的查询会是什么样子?

【问题讨论】:

  • 静态 SQL 语句中不能有动态列。唯一的选择是使用 VBA 动态创建 Insert 语句。

标签: sql ms-access logging sql-update sql-insert


【解决方案1】:

我不明白你为什么需要做一个UPDATE,只需直接/字面上指定新列的名称和值:

INSERT INTO tLOGS ( pid, A, B, Action )
SELECT pid, A, B, 'Add' FROM tInput

【讨论】:

  • 对不起,我忘了说,在我的实际应用程序中,我有数百列,所以我不能手动输入每一列。问题已更新。
  • @KangzeHuang 如果您使用的是 UPDATE 语句,您仍然需要手动指定所有列。请在您的原始问题中提供更多信息,显示实际数据而不是简化。也就是说,如果您的表有数百列,那么您可能有一个糟糕的数据库设计,应该进行规范化。
  • 不幸的是我在这个设计中没有选择(原始输入)。我的实际数据和这个简化完全一样,除了 200 多个字段。
  • “我无法输入每一列”。好吧,您以某种方式指定了哪些值转到哪些字段。还是我错过了什么?
  • 我希望有一个通用命令来完成此操作,例如指定所有字段以及这个新字段。如果这不可能,我想我只需要手动输入。
猜你喜欢
  • 1970-01-01
  • 2011-09-06
  • 1970-01-01
  • 2018-02-10
  • 1970-01-01
  • 1970-01-01
  • 2010-11-19
相关资源
最近更新 更多