2010-01-05 5 views
1

Как обновить данные в таблице в отдельной базе данных на основе записей в текущей базе данных?Обновление записей только в том случае, когда ID соответствует

Например, я хочу обновить поле «status» в базе данных под названием «database_old» со значением, содержащимся в базе данных «database_new». Мои текущие данные существуют в базе данных «database_new». Я хочу только обновлять записи в «database_old» db при совпадении поля record_id. Поля «status» и «record_id» существуют в таблице «Продукты» в обеих базах данных. Как я уже сказал, поле «статус» должно обновляться со значением из «database_new», но только обновляться, если соответствует record_id.

Эта база данных MS SQL 2005.

+0

Являются ли обе базы данных на одном экземпляре SQL Server? Вероятно быть на разностных экземплярах на одном сервере, но, скорее, быть разными экземплярами на разных серверах ... –

+0

Оба db находятся на одном сервере – jeff

+0

@Jeff: На сервере может быть установлено несколько экземпляров SQL Server. Просто говоря –

ответ

0

Если обе базы данных находятся на одном и том же сервере, просто используйте имя из 3-х частей Database.dbo.TableName. Пример:

update old 
set old.status = new.status 
from database_old.dbo.products old 
inner join database_new.dbo.products new 
on old.record_id = new.record_id 

Если они находятся на разных серверах, тогда вам необходимо иметь связанный сервер, а затем использовать 4 части.

3
update database_old.dbo.products 
set status = new.status 
from database_new.dbo.products new 
where database_old.dbo.products.record_id = new.products.record_id 
+1

+1. Помните, что для работы с различными экземплярами DB нужны связанные серверы –