Michał Z.

Michał Z. Młodszy
administrator IT w
2x3 S.A.

Temat: TRIGGER uzupełniający atrybut o id zalogowanego...


SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE TRIGGER [CDN].[Atrybuty_PrzypisanieMagazyniera]
ON [CDN].[Atrybuty]
FOR INSERT, UPDATE
AS
BEGIN
SET NOCOUNT ON;

-- Dla zmiany wartości atrybutu
IF UPDATE (Atr_Wartosc)
BEGIN
-- Jeżeli ID klasy atrybutu jest równe X (u mnie 49 )

IF EXISTS (SELECT inserted.Atr_ID FROM inserted WHERE inserted.Atr_Atkid = 49 AND inserted.Atr_Wartosc <> '' AND inserted.Atr_Wartosc <> '<Brak>')
BEGIN
DECLARE @GIDMaNumer INT -- GID numer WM
DECLARE @ObiNumer INT -- GID obiektu dla którego uruchamiany jest wyzwalacz
DECLARE @ObiTyp INT -- GID Typ obiektu dla którego uruchamiany jest wyzwalacz
DECLARE @Wysylka VARCHAR(30) -- Wartość atrybutu z numerem wysyłki
DECLARE @param1 VARCHAR(8) -- Wartość parametru operatora


-- Pobranie wartości atrybutu z numerem wysyłki
SET @Wysylka = (SELECT Atr_wartosc FROM inserted)

-- Pobranie GID-u obiektu (w tym przypadku PKA/WKA) dla którego zmieniana jest wartość atrybutu.
SET @ObiNumer = (SELECT Atr_ObiNumer FROM inserted)

-- Pobranie GID typ-u obiektu (w tym przypadku PKA/WKA) dla którego zmieniana jest wartość atrybutu.
SET @ObiTyp = (SELECT Atr_ObiTyp FROM inserted)

-- Pobranie GID-u wydania magazynowego o określonym numerze.
-- Stąd też wyjściowy sposób zwrócenia GID-u dla WM

SET @GIDMaNumer = (SELECT MaN_GIDNumer FROM CDN.MagNag
WHERE MaN_GIDTyp = 1601 AND
MaN_GIDNumer = @ObiNumer)
-- Akronim operatora przypisującego WM do Magazyniera
UPDATE CDN.Atrybuty
SET Atr_Wartosc = ( SELECT SES_OpeIdent FROM inserted INNER JOIN CDN.Sesje ON SES_CLARIONSPID = @@SPID AND Ses_Aktywna = 0)

WHERE Atr_ObiTyp = @ObiTyp AND CDN.Atrybuty.Atr_ObiNumer = @GIDMaNumer AND Atr_AtkID = 71


END
END

END