Code:
USE [profile]
GOSET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Description: Artikelnummer, Kurztext, Kunde und Fremdartikelnr. werden nach dem Verknüpfen automatisch
-- aus Teilestamm ins Dokumentstamm übertragen.
-- =============================================
CREATE TRIGGER [dbo].[US_TG_VERBIND_ARTNR]
ON [dbo].[VERBIND]
AFTER INSERT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for trigger here
DECLARE @vb_objtyp1 int, @vb_objtyp2 int
SET @vb_objtyp1 = (SELECT vb_objtyp1 FROM inserted)
SET @vb_objtyp2 = (SELECT vb_objtyp2 FROM inserted)
-- Aktualisieren nur dann, wenn ein Dokument (@vb_objtyp2 = 3) mit
-- einem Teil (@vb_objtyp1 = 2) verknüpft wird
IF ((@vb_objtyp1 = 2) AND (@vb_objtyp2 = 3))
BEGIN
DECLARE @vb_objidnr1 int, @vb_objidnr2 int, @link_exists int
-- Lese Dokument/Teil Db-Ids und prüfe, ob das Dokument schon mit einem
-- Teil verknüpft ist.
SET @vb_objidnr1 = (SELECT vb_objidnr1 FROM inserted)
SET @vb_objidnr2 = (SELECT vb_objidnr2 FROM inserted)
SET @link_exists = (SELECT count(*) FROM verbind WHERE vb_objidnr2 = @vb_objidnr2 AND vb_objtyp2 = 3 AND vb_objtyp1 = 2)
-- Die Angaben werden nur für die erste Verknüpfung übernommen
IF @link_exists = 1
BEGIN
DECLARE @teilenr varchar(39), @ktxt varchar(100), @kdnr numeric(16,6), @fremdnr varchar(39)
-- Lese Artikelnummer, Kurztext etc. aus Artikelstamm und Dokumentenstamm.
-- Nicht leere Felder aus Dokumentenstamm haben Vorrang.
SELECT @teilenr = CASE WHEN LEN(do_fstl3) > 0 THEN do_fstl3 ELSE nft_stl9 END,
@ktxt = CASE WHEN LEN(do_fstl4) > 0 THEN do_fstl4 ELSE nft_sth0 END,
@kdnr = CASE WHEN do_fflo4 > 0 THEN do_fflo4 ELSE nft_flo4 END,
@fremdnr = CASE WHEN LEN(do_fstl8) > 0 THEN do_fstl8 ELSE nft_stl8 END
FROM nfstamm, dokstamm WHERE nft_idnr = @vb_objidnr1 AND do_idnr = @vb_objidnr2
-- ...und kopiere die Werte in den Dokumentstamm.
UPDATE dokstamm
SET do_fstl3 = @teilenr, do_fstl4 = @ktxt, do_fflo4 = @kdnr, do_fstl8 = @fremdnr
WHERE do_idnr = @vb_objidnr2
END
END
END
GO