1

我有一个任务,会将记录插入到 foxpro 表中。有一个名为“submitid”的列,但它不是主键。我将不得不以 max(submitid) + 1 的增量插入一个数字。如果两个用户同时提交相同的查询怎么办。它会有相同的重复提交ID吗?

4

2 回答 2

4

您可以使用 OLEDB CommandText 通过使用 VFP 命令和函数来获取下一个数字并插入记录来完成此操作。

下面是伪的,但你应该明白。“EXECS”是一个 VFP 功能,允许您执行本机 VFP 命令和功能。

 oCommand.CommandText = "EXECS([USE MyTable AGAIN SHARED IN 0] + chr(13) + [FLOCK("MyTable")] + chr(13) + ["get number"] + chr(13) + [INSERT INTO MyTable (col1, col2) VALUES (nextid, othervalue) ] )"
于 2013-04-26T17:30:46.397 回答
2

对于并发用户,您最终可能会复制 id。我在 FoxPro 中看到处理此问题的一种方法是使用一个表来跟踪当前 id,这很像 postgres 中的序列,并使用它而不是使用 Max。如果您想确定,还包括在检索和增加值之前锁定表。

于 2013-04-26T17:18:39.263 回答