更新、插入和 ?DBEXECUTE 中的字符

本主题描述了更新和插入 DBEXECUTE 的行为和 ? 的使用字符。

假设有一个名为“项目”的空白 SQL 表,其中包含两列:ID 和名称。ID 是主键。

在未受保护的单元格中使用此公式:

=DBEXECUTE("configdb", "SELECT items.id,items.name FROM items WHERE ID=1","INSERT into items (ID,Name) VALUES (1,?)")

视图模式下,在单元格中指定 1,然后按 Enter。

由于表为空且不包含值 1 的 ID,因此执行插入语句。插入语句在表中创建此行:

行号 ID 名称
1 1 1

通过输入 1,即可指定 ID。?字符会导致在名称列中输入此值。

现在在单元格中指定 2。因为 ID 1 已存在,因此不执行插入语句。相反,如下表所示,将更新包含 ID 1 的行:

行号 ID 名称
1 2 1

由于不执行插入语句,因此“名称”列未更新。

现在在单元格中指定 3。由于 ID 1 不存在,因此执行插入语句,并添加新行:

行号 ID 名称
1 1 3
2 2 1

此部分公式中值 1 和 3 公式的结果:VALUES (1,?)

如果现在指定 4,则会再次显示 ID 1 并更新包含 ID 1 的行。

行号 ID 名称
1 2 1
2 4 3

如果指定 5,则添加另一行:

行号 ID 名称
1 1 5
2 2 1
3 4 3