вставить в таблицу2 выбрать из таблицы1, если вся строка не существует в таблице2 - PullRequest
0 голосов
/ 25 февраля 2019

мой вопрос: у меня есть сервер 2 sql, я использую связанный сервер для обновления таблицы на сервере server2 с server1.
Я использую этот запрос:

 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, если новая или отредактированная запись на server1 не существует на server2.
спасибо, ребята.
UODATE:

enter image description here

проверьте изображение выше, когда на сервере1 было 9 записей, а на сервере2 пустая таблица, запрос работал, и все 9 записей были вставлены на сервер2.После этого я добавил новую запись на сервере server1, которая является 10-й записью, и извиняюсь за вышеприведенный запрос, который я получил (выполнено 0 строк).почему новая запись не вставлена?

1 Ответ

0 голосов
/ 25 февраля 2019

В операторе несуществования вам нужно указать условие 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 )  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...