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