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

时间:2015-06-22 15:58:39

标签: sql ms-access ms-access-2013

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

tbl1:由本地用户实时更新

tbl2tbl1的导入副本,远程用户下载它,解决它,然后使用更新更新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.然后他更新tbl1tbl1现在有他的第1,2和3行,但不是我的。

我想要发生的是这个。更新后,tbl1包含编号为1,2,3,1000000,1000001和1000002的行。

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

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

1 个答案:

答案 0 :(得分:0)

看起来以下SQL将更改增量和种子数:

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

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