Jestem w trakcie pisania swojego pierwszego trigera na bazie, oczywiście testowej.
Celem trigera jest ograniczenie przesuwania określonych towarów na określone magazyny.
Pisze na ten moment triger na jednym towarze i testuje.
Sama blokada działa dobrze tzn. przy próbie zatwierdzenia MMW z wybranym towarem na podany magazyn mam informacje że taka operacja nie jest możliwa i na tym się kończy prawidłowe działanie trigera, ponieważ gdy skasuje z dokumentu towar, którego nie można przesunąć a zostawię inne towary to dostaje błąd z XL
Może mnie ktoś naprowadzić, w którym miejscu popełniam błąd?Szczegóły operacji:
Operacja zmiany obiektu TraNag o identyfikatorze (1603:1372418:322:0).
Identyfikator operacji: Zapisz_TraNag-29.
Błąd: Błąd podczas konwertowania typu danych varchar na numeric. (37000), Błąd podczas konwertowania typu danych varchar na numeric..
Kod: Zaznacz cały
USE [ERPXL_ITESZKOL]
GO
/****** Object: Trigger [CDN].[ITE_TraNag_PrzesuwanietowaruDino] Script Date: 14.12.2020 10:00:17 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER TRIGGER [CDN].[ITE_TraNag_PrzesuwanietowaruDino]
ON [CDN].[TraNag]
For Update
AS
Declare @typ int
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
IF UPDATE(trn_stan)
Set @typ = (Select trn_gidtyp from inserted)
if @typ = 1603 -- dla mmw
BEGIN
IF EXISTS (
Select * from inserted i
inner join CDN.TraElem elem on i.TrN_GIDTyp = elem.TrE_GIDTyp and i.TrN_GIDNumer = elem.TrE_GIDNumer
where (i.TrN_Stan in(1,2,3,4,5)) --zadziala jesli jest próba zapisu do bufora lub zatwierdzenia
and (i.TrN_MagZNumer = 1) and (i.TrN_MagDNumer in (16,18)) -- dla źródłowy centralny i docelowy tech 12,18
and elem.TrE_TwrKod = 2019220282842 -- dla wybranego towaru
)
BEGIN
Raiserror('#CDN_BLAD/# #CDN_1=Nie można przesunąć towaru . /# #CDN_2= /# #CDN_3= /# ',16,1)
ROLLBACK TRAN
end
-- Insert statements for trigger here
END
END