Access 2013,追加查询,追加前自动更改主键
Access 2013, Append query, automatically change primary keys before appending
我有两个表需要定期追加和更新查询运行。
tbl1
: 本地用户实时更新
tbl2
:tbl1
的导入副本,远程用户下载它,处理它然后使用下面的更新和追加查询更新 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。然后他更新 tbl1
。 tbl1
现在有他的第 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 是增量。
我有两个表需要定期追加和更新查询运行。
tbl1
: 本地用户实时更新
tbl2
:tbl1
的导入副本,远程用户下载它,处理它然后使用下面的更新和追加查询更新 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。然后他更新 tbl1
。 tbl1
现在有他的第 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 是增量。