J'ai une table qui stocke les informations sur les médicaments du formulaire et qui doit être mise à jour quotidiennement à partir d'un formulaire central. La table temporaire est identique à la table de médicaments. Les données de la table temporaire peuvent être identiques (et la plupart du temps le seront) à la table principale ou peuvent contenir des lignes mises à jour ou de nouvelles lignes.Mise à jour d'une table à partir d'une table temporaire
J'ai une procédure stockée pour mettre à jour la table principale, mais elle échoue car elle ne mettra pas à jour les lignes NULL (s'il y a une nouvelle ligne dans la table temporaire).
C'est un MSSQL Server 2005.
Où suis-je qui ne va pas ici:
-- Insert statements for procedure here
UPDATE [RX_Billing].[dbo].[FS_Drug]
SET [TRADENAME] = [RX_Billing].[dbo].[FS_Drug_TEMP].[TRADENAME]
,[CDM] = [RX_Billing].[dbo].[FS_Drug_TEMP].[CDM]
,[NDC] = [RX_Billing].[dbo].[FS_Drug_TEMP].[NDC]
,[IP_COST] = [RX_Billing].[dbo].[FS_Drug_TEMP].[IP_COST]
,[OP_COST] = [RX_Billing].[dbo].[FS_Drug_TEMP].[OP_COST]
,[HH_COST] = [RX_Billing].[dbo].[FS_Drug_TEMP].[HH_COST]
,[VAR_COST] = [RX_Billing].[dbo].[FS_Drug_TEMP].[VAR_COST]
,[LSTUPDATE] = [RX_Billing].[dbo].[FS_Drug_TEMP].[LSTUPDATE]
FROM [RX_Billing].[dbo].[FS_Drug]
RIGHT OUTER JOIN [RX_Billing].[dbo].[FS_Drug_TEMP] ON
[RX_Billing].[dbo].[FS_Drug].[TRADENAME] =
[RX_Billing].[dbo].[FS_Drug_TEMP].[TRADENAME]
EDIT:
Je suis allé avec le code de Rory. Merci, ça fonctionne magnifiquement.
Une note à Orion Edwards: UPSERT/MERGE est exactement ce que je voulais, mais il n'est pas supporté par SQL Server 2005. Apparemment, il était prévu, mais n'a pas fait cette version. Il est disponible dans le serveur 2008. (D'après ce qu'Interwebs m'a dit.)