我有两个表需要定期运行追加和更新查询。
tbl1
:由本地用户实时更新
tbl2
:tbl1
的导入副本,远程用户下载它,解决它,然后使用更新更新tbl1
并附加下面的查询。
当用户在tbl2
中创建新记录然后运行这些查询时,具有匹配主键(内置自动编号)的Tbl1
记录将被覆盖。我有一个解决方案,但很乐意接受一个更好的解决方案。
我喜欢远程用户' PK在更新前添加了一些值。我是否可以在更新查询中插入一些内容,将"添加1000000000到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多行数据,而没有任何一致的唯一方式来标识行。所以我需要一些东西作为主键。
答案 0 :(得分:0)
看起来以下SQL将更改增量和种子数:
ALTER TABLE Table ALTER COLUMN Field COUNTER(1000000,1)
其中1000000是新的种子值,1是增量。