MERGE Statement Useful for product inventory Sergio Govoni [email protected] Speaker Sergio Govoni • Dal 1999 mi occupo di progettazione, analisi e sviluppo di un ERP multi-aziendale client/server in ambiente Win32 – Team leader – Product manager • MCP, MCTS SQL Server – Lavoro con SQL Server dalla versione 7.0 • Speaker, Editor, Publisher @ UGISS – www.ugiss.org – Blog: http://community.ugiss.org/blogs/sgovoni Agenda • MERGE Statement – Fondamenti – Clausole – Utilizzo • Scenario: Inventario di magazzino MERGE Fondamenti • MERGE permette di distinguere: – Una tabella sorgente (source) – Una tabella destinazione (target) • Modificando il contenuto della tabella destinazione con i dati della tabella sorgente • Con una sola operazione DML *multipla* Source • Source non può essere remota Target o Destination • Target table or view • SQL Std con estensioni T-SQL MERGE Clausole • WHEN MATCHED – La riga esiste sia in source che in target – L’equivalente di source INNER JOIN target – Azioni supportate: UPDATE e DELETE • WHEN NOT MATCHED [BY TARGET] – La riga esiste in source, ma non in target – L’equivalente di source LEFT OUTER JOIN target – Azione supportata: INSERT • WHEN NOT MATCHED BY SOURCE – La riga esiste in target, ma non in source – L’equivalente di source RIGHT OUTER JOIN target – Azioni supportate: UPDATE e DELETE MERGE Utilizzo • Scenario: Inventario di magazzino – Si richiede l’aggiornamento delle giacenze logiche memorizzate nella tabella dbo.ProductInventory (target) con le giacenze fisiche rilevate durante l’inventario, salvate in dbo.FrequentInventory (source) – Aggiornamento quantità e inserimento nuovi prodotti – Eliminazione prodotti non giacenti (giacenza = 0) – Aggiornamento della colonna status per i prodotti non rilevati (righe in target che non hanno corrispondenza in source) Product inventory MERGE in action MERGE Statement Risorse Generiche • MERGE Statement – • Informazioni sul prodotto SQL Server – – • http://www.ugiss.org http://community.ugiss.org Newsgroups pubblici via WEB – – • http://msdn.microsoft.com/sql Comunità SQL Server – – • http://www.microsoft.com/italy/sql http://www.microsoft.com/sql Supporto sviluppo e professionisti IT – • http://www.ugiss.org/Content/Article/MERGE-Statements-in-Action.aspx http://www.microsoft.com/italy/communities/newsgroups/default.mspx http://www.microsoft.com/technet/community/newsgroups/server/sql.mspx Formazione e mentoring – – http://www.microsoft.com/italy/traincert http://www.solidqualitylearning.com/ MERGE Statement Grazie!