我的问题是:
我有2个sql服务器,我正在使用链接服务器从server1更新server2上的表。
我正在使用此查询:
insert into [server2].[db2].[dbo].[pcodes] (parcode,pname,unit,typ) select parcode,pname,unit,typ from [server1].[db1].[dbo].[pcodes] where not exists (select parcode,pname,unit,typ from [server2].[db2].[dbo].[pcodes])
该代码仅在server2上的表为空时有效,因此当我第一次执行查询时,但是在此之后,当我在server1上添加新记录并执行查询时,我得到的是(0行生效)。有什么建议吗?
我想让您知道,如果server2中不存在新的或已编辑的记录,那么我想更新server2表。
谢谢大家。
UODATE:
检查上图,当记录为server1中的9条记录,而server2中的表为空时,查询工作正常,所有9条记录均已插入到server2中,之后,我在server1中添加了一条新记录第10条记录,我引用了上面的查询,得到了(影响0行)。为什么未插入新记录?
答案 0 :(得分:2)
在不存在语句中,您需要具有where条件,查询缺少该条件,
INSERT INTO [server2].[db2].[dbo].[pcodes] (parcode,pname,unit,typ)
SELECT parcode,pname,unit,typ
FROM [server1].[db1].[dbo].[pcodes] a
WHERE NOT EXISTS
(SELECT parcode,pname,unit,typ from [server2].[db2].[dbo].[pcodes] b
WHERE a.parcode=b.parcode and a.pname=b.pname and a.unit=b.unit and a.typ=b.typ )