Access 2013,追加查询,追加前自动更改主键

Access 2013, Append query, automatically change primary keys before appending

我有两个表需要定期追加和更新查询运行。

tbl1: 本地用户实时更新

tbl2tbl1 的导入副本,远程用户下载它,处理它然后使用下面的更新和追加查询更新 tbl1

当用户在 tbl2 然后 运行 这些查询中创建新记录时,具有匹配主键(内置自动编号)的 Tbl1 记录将被覆盖。我有一个解决方案,但很乐意接受更好的解决方案。

我希望远程用户的 PK 在更新前增加一些值。有什么我可以插入到更新查询中的东西,它将 "add 1000000000 to PK" 用于远程用户吗?然后我会给每个远程用户一些百万序列号(这些数字对用户是不可见的)。

INSERT INTO tbl1 ( pk, thing1, thing2, thing3)
FROM tbl2 
LEFT JOIN tbl1 
ON tbl2.[pk] = tbl1.[pk];

UPDATE tbl2 
INNER JOIN tbl1 
ON tbl2.PK = tbl1.PK 
SET

tbl1.[thing1] = IIf([tbl2].[thing1] Is Null,[tbl1].[thing1],[tbl2].[thing1]), 

tbl1.[thing2] = IIf([tbl2].[thing2] Is Null,[tbl1].[thing2],[tbl2].[thing1]), 

tbl1.[thing3] = IIf([tbl2].[thing3] Is Null,[tbl1].[thing3],[tbl2].[thing3]);

编辑 1: Newd

目前我在本地新建了三行数据。 PK 是 1、2 和 3。远程用户做同样的事情,PK 1、2 和 3。然后他更新 tbl1tbl1 现在有他的第 1、2 和 3 行,但没有我的。

我希望发生的事情是这样的。更新后,tbl1 的行编号为 1、2、3、1000000、1000001 和 1000002。

所以我的编号从 1 开始。远程用户 1 的号码从 1000000 开始。远程用户 2 的号码从 2000000 开始。

我需要每条记录的唯一标识符。在 Excel 中,用户添加了 10000 多行数据,但没有任何一致的唯一方式来标识一行。所以我需要一些东西作为主键。

看起来下面的SQL会改变增量和种子数:

ALTER TABLE Table ALTER COLUMN Field COUNTER(1000000,1)

其中 1000000 是新的种子值,1 是增量。