2010-01-05 8 views
1

Comment mettre à jour les données d'une table dans une base de données distincte en fonction des enregistrements de la base de données en cours?Mise à jour des enregistrements uniquement lorsque l'ID correspond

Par exemple, je veux mettre à jour le champ « statut » dans la base de données appelée « database_old » avec la valeur contenue dans la base de données « database_new ». Mes données actuelles existent dans la base de données "database_new". Je veux seulement mettre à jour les enregistrements dans la base de données "database_old" lorsque le champ record_id correspond. Les champs "status" et "record_id" existent dans la table "products" dans les deux bases de données. Comme je l'ai dit, le champ "status" devrait être mis à jour avec la valeur de "database_new" mais seulement mettre à jour si le record_id correspond.

Ceci est une base de données MS SQL 2005.

+0

Les deux bases de données sont-elles sur la même instance SQL Server? Plausible d'être sur des instances de différence sur le même serveur, mais plus susceptibles d'être différentes instances sur différents serveurs ... –

+0

les deux db sont sur le même serveur – jeff

+0

@Jeff: Vous pouvez avoir plusieurs instances SQL Server installées sur le serveur. Juste en disant –

Répondre

0

Si les deux bases de données sont sur le même serveur, utilisez simplement le nom de la pièce en 3 Database.dbo.TableName. Exemple:

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 

Si elles sont sur des serveurs différents, vous devez disposer d'un serveur lié, puis utiliser un nom à 4 parties.

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. N'oubliez pas que les serveurs liés doivent fonctionner sur différentes instances de base de données –

Questions connexes