Napisałem taki mały trigger, ale:
1. wpis w tabeli CDN.ZamZamLinki tworzy się dopiero po otwarciu formatki, więc zostaje blokada dopiero po zmianie ZanStan a nie przy insercie.
2. wpis w tabeli CDN.BstDokumenty tworzy się dopiero po zamknięciu zamówienia, wiec blokada przy ZanStan traci sens.
3. Mała Hydra nie rozróżnia lista ZZ od ZS ( obie listy to po prostu ZanLista).
Licencje na Interfejs mam, problem w tym ze nie mam pomysłu z której strony to ugryźć.
Kod: Zaznacz cały
/****** Object: Trigger [CDN].[ZZ_bez_ZS] Script Date: 22.07.2020 21:48:02 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [CDN].[ZZ_bez_ZS] ON [CDN].[ZamNag]
FOR --INSERT,
UPDATE
AS
DECLARE @GID_Numer INT
DECLARE @GID_TYP SMALLINT
DECLARE @ZrdNumer INT
DECLARE @ZanTyp SMALLINT
DECLARE @ZaN_DokZwiazane INT
DECLARE @STRING NVARCHAR(200)
DECLARE @STRING1 NVARCHAR(200)
DECLARE @STRING2 NVARCHAR(200)
SET @ZrdNumer= 0
SET @GID_Numer = 0
SET @GID_TYP = 0
SET @ZaN_DokZwiazane = 0
IF Update(ZaN_Stan)
--EXISTS (SELECT * FROM inserted)
BEGIN
select @GID_TYP = ZaN_ZamTyp, @ZrdNumer = ZaN_ZrdNumer, @GID_Numer = ZaN_GIDNumer, @ZaN_DokZwiazane = ZaN_DokZwiazane from inserted
if (@GID_TYP = 1152)
BEGIN
SET @STRING1='#CDN_BLAD/# #CDN_1=Próba utworzenia ZZ bez powiązanego ZS'
SET @STRING2= '/# #CDN_2=ZZ bez ZS'
SET @STRING= @STRING1+@STRING2
IF CDN.PolaczenieInfo(4) NOT IN ('GOSIAK', 'WALDEKA')
BEGIN ---1
IF NOT EXISTS (SELECT * FROM CDN.BstDokumenty where BsD_DokNumer = @GID_Numer)
IF NOT EXISTS (SELECT * FROM CDN.ZamZamLinki where ZZL_ZZGidNumer = @GID_Numer)
BEGIN
RAISERROR(@STRING, 16, 1)
ROLLBACK TRAN
SET NOCOUNT OFF
RETURN
END
END ---1
END
END