114 lines
3.7 KiB
Transact-SQL
114 lines
3.7 KiB
Transact-SQL
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
|