Files
WebGIM/GIM_site/sql/WebGIM_1.6_BugFix.sql
2017-01-27 22:23:39 +01:00

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