USE [GIM] GO /****** Object: StoredProcedure [dbo].[stp_SinTag_UpdateQuery] Script Date: 02/12/2015 16:56:59 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /************************************* * STORED PROCEDURE stp_SinTag_UpdateQuery * * update recordmerge come sinonimo del TagCordOrig (che sparisce) verso TagCode * * - ricodifica associazione verso item * - ricodifica associazione verso macchine * - crea record in tab sinonimi * - elimina record in tab item * * mod : 23/11/2015 * aut : S.E. Locatelli **************************************/ ALTER PROCEDURE [dbo].[stp_SinTag_UpdateQuery] ( @Original_TagCodeOrig nvarchar(50), @TagCode nvarchar(50) ) AS SET NOCOUNT OFF; BEGIN tran ------------------------------------------------------ -- step 1: ricodifica associazione verso ITEMS ------------------------------------------------------ -- 2015.12.02: rifatto! tolto update e messo UPDATE (di quello che POSSO aggiornare) + DELETE delle "rimanenze" --UPDATE Tag2Item --SET TagCode = @TagCode --WHERE TagCode = @Original_TagCodeOrig -- FACCIO CTE x calcolare COSA aggiornerei... ;WITH cte_t2i AS ( SELECT idxItem, @TagCode AS TagCode FROM Tag2Item WHERE TagCode = @Original_TagCodeOrig ) -- faccio MERGE dei record MANCANTI MERGE INTO Tag2Item AS target USING (SELECT * FROM cte_t2i) AS source ON (target.idxItem = source.idxItem AND target.TagCode = source.TagCode) --WHEN MATCHED THEN -- UPDATE SET Traduzione = source.traduzione WHEN NOT MATCHED THEN INSERT (idxItem, TagCode) VALUES (source.idxItem, source.TagCode); -- faccio DELETE di quanto rimasto DELETE FROM Tag2Item WHERE TagCode = @Original_TagCodeOrig ------------------------------------------------------ ------------------------------------------------------ -- step 2: ricodifica associazione verso MACCHINE ------------------------------------------------------ -- 2015.12.02: rifatto! tolto update e messo UPDATE (di quello che POSSO aggiornare) + DELETE delle "rimanenze" --UPDATE Tag2Macc --SET TagCode = @TagCode --WHERE TagCode = @Original_TagCodeOrig -- FACCIO CTE x calcolare COSA aggiornerei... ;WITH cte_t2m AS ( SELECT idxMacchina, @TagCode AS TagCode FROM Tag2Macc WHERE TagCode = @Original_TagCodeOrig ) -- faccio MERGE dei record MANCANTI MERGE INTO Tag2Macc AS target USING (SELECT * FROM cte_t2m) AS source ON (target.idxMacchina = source.idxMacchina AND target.TagCode = source.TagCode) --WHEN MATCHED THEN -- UPDATE SET Traduzione = source.traduzione WHEN NOT MATCHED THEN INSERT (idxMacchina, TagCode) VALUES (source.idxMacchina, source.TagCode); -- faccio DELETE di quanto rimasto DELETE FROM Tag2Macc WHERE TagCode = @Original_TagCodeOrig ------------------------------------------------------ ------------------------------------------------------ -- step 3: creo record sinonimi ------------------------------------------------------ UPDATE SinonimiTag SET TagCode = @TagCode WHERE ((TagCodeOrig = @Original_TagCodeOrig) AND TagCode <> @TagCode) OR ((TagCode = @Original_TagCodeOrig)) --INSERT INTO SinonimiTag (TagCodeOrig, TagCode) --VALUES (@Original_TagCodeOrig, @TagCode) ------------------------------------------------------ ------------------------------------------------------ -- step 4: elimino ITEMS ------------------------------------------------------ DELETE FROM AnagTags WHERE TagCode = @Original_TagCodeOrig ------------------------------------------------------ COMMIT Tran