80 lines
2.5 KiB
Transact-SQL
80 lines
2.5 KiB
Transact-SQL
SET ANSI_NULLS ON
|
|
GO
|
|
|
|
SET QUOTED_IDENTIFIER ON
|
|
GO
|
|
|
|
-- =============================================
|
|
-- Author: Stoyan Zlatev
|
|
-- Create date: 13-04-2023
|
|
-- Description: That trigger should update IdentNrGruppierung, IdentNr_Gruppendetails
|
|
-- when a group whit name (WPD [Nennweite] / [Temperatur]°)
|
|
-- dose not exists in the IdentNr_Gruppendetails table.
|
|
-- Update: 26-04-2023 - @GroupTyp added.
|
|
-- The GroupTyp will be determinated in CASE WHEN ... query
|
|
-- and later used for updates on [IdentNr_Gruppendetail] and [IdentNrGruppierung]
|
|
-- =============================================
|
|
ALTER TRIGGER [TRG_AfterInsert_UpdateIdentNrGrouping]
|
|
ON [dbo].[Identnr]
|
|
AFTER INSERT
|
|
AS
|
|
BEGIN
|
|
-- SET NOCOUNT ON added to prevent extra result sets from interfering with SELECT statements.
|
|
SET NOCOUNT ON;
|
|
|
|
DECLARE @IdentNr INT;
|
|
DECLARE @Nennweite INT;
|
|
DECLARE @Temperatur INT;
|
|
DECLARE @Typ VARCHAR(20);
|
|
DECLARE @GroupId INT;
|
|
DECLARE @GroupName VARCHAR(MAX);
|
|
DECLARE @GroupTyp VARCHAR(20);
|
|
|
|
-- setting declared field from inserted table
|
|
SELECT @IdentNr = [IdentNr]
|
|
, @Nennweite = [Nennweite]
|
|
, @Temperatur = [Temperatur]
|
|
, @Typ = [Typ]
|
|
FROM [inserted];
|
|
|
|
SET @GroupTyp = (CASE WHEN @Typ LIKE '%WPD%' THEN 'WPD'
|
|
WHEN @Typ LIKE '%WPF%' THEN 'WPF'
|
|
WHEN @Typ LIKE '%WSD%' THEN 'WSD'
|
|
ELSE NULL END);
|
|
|
|
IF @GroupTyp IS NOT NULL
|
|
BEGIN
|
|
-- creating a group name from declared values "@GroupTyp [Nennweite] / [Temperatur]°"
|
|
SET @GroupName = @GroupTyp
|
|
+ ' '
|
|
+ CASE WHEN @Nennweite IS NOT NULL THEN CAST(@Nennweite AS VARCHAR(5)) ELSE '0' END
|
|
+ ' / '
|
|
+ CASE WHEN @Temperatur IS NOT NULL THEN CAST(@Temperatur AS VARCHAR(5)) ELSE '0' END
|
|
+ '°';
|
|
|
|
-- getting next group id
|
|
SET @GroupId = (SELECT TOP 1 [ID]
|
|
FROM [IdentNr_Gruppendetail]
|
|
WHERE [Name] = @GroupName);
|
|
|
|
-- case the group name dose not exist into [IdentNr_Gruppendetail] will be inserted.
|
|
IF @GroupId IS NULL
|
|
BEGIN
|
|
SET @GroupId = (SELECT MAX([ID]) FROM [IdentNr_Gruppendetail]) + 1;
|
|
|
|
INSERT INTO [IdentNr_Gruppendetail] ([ID], [Name])
|
|
VALUES (@GroupId, @GroupName)
|
|
END;
|
|
|
|
-- case the @IdentNr dose not exist [IdentNrGruppierung] will be mapped.
|
|
IF (SELECT COUNT(1) FROM [IdentNrGruppierung] WHERE [IdentNr] = @IdentNr) = 0
|
|
BEGIN
|
|
SET IDENTITY_INSERT [IdentNrGruppierung] ON;
|
|
INSERT INTO [IdentNrGruppierung] ([IdentNr], [GruppenID], [ID])
|
|
VALUES (@IdentNr, @GroupId, (SELECT MAX([ID]) FROM [IdentNrGruppierung]) + 1)
|
|
SET IDENTITY_INSERT [IdentNrGruppierung] OFF;
|
|
END;
|
|
END;
|
|
END
|
|
GO
|