Hallo Zusammen,
ich stehe gerade auf dem Schlauch. Vielleicht komme ich auch gleich darauf und lösche diesen Beitrag, aber vielleicht könnt Ihr mal mitdenken:
Seht ihr eine Möglichkeit schon beim Insert die [Mail] über die Matchingtabelle in den [Mailnickname] zu übersetzen und in die dbo.IDxMail zu schreiben ohne erst nach dem Insert ein Update zu machen?

darüber hinaus nutze ich folgende Split Function

Danke für die Mithilfe im Voraus!
Hier noch einmal der eigentliche Code ohne Highlights:
ich stehe gerade auf dem Schlauch. Vielleicht komme ich auch gleich darauf und lösche diesen Beitrag, aber vielleicht könnt Ihr mal mitdenken:
Seht ihr eine Möglichkeit schon beim Insert die [Mail] über die Matchingtabelle in den [Mailnickname] zu übersetzen und in die dbo.IDxMail zu schreiben ohne erst nach dem Insert ein Update zu machen?

darüber hinaus nutze ich folgende Split Function

Danke für die Mithilfe im Voraus!
Hier noch einmal der eigentliche Code ohne Highlights:
Code:
INSERT INTO [DWDATA].[DBO].[IDxMAIL]
( [ID] ,
[MAIL]
)
SELECT DWDOCID ,
MAIL
FROM dwdata.dbo.PERSONAL
CROSS APPLY [DWDATA].[DBO].[SPLIT](REPLACE(CAST([BEMERKUNG] AS NVARCHAR(MAX)),
N'||', N','), ',')
WHERE [BEMERKUNG] IS NOT NULL
AND [DWDOCID] NOT IN ( SELECT DISTINCT
( [ID] )
FROM [DWDATA].[DBO].[IDxMAIL])
UPDATE dwdata.dbo.IDxMail
SET MAIL = ( SELECT Mailnickname
FROM dwrigths.dbo.Matchingtabelle
WHERE Proxyadresse = dwdata.dbo.IDxMail.mail
)
Code:
CREATE FUNCTION [dbo].[Split]
(
@String NVARCHAR(4000) ,
@Delimiter CHAR(1)
)
RETURNS @Results TABLE
(
idx INT IDENTITY(1, 1)
NOT NULL ,
Mail NVARCHAR(4000)
)
AS
BEGIN
DECLARE @Index INT
DECLARE @Slice NVARCHAR(4000)
SELECT @Index = 1
IF @String IS NULL
RETURN
WHILE @Index != 0
BEGIN
SELECT @Index = CHARINDEX(@Delimiter, @String)
IF ( @Index != 0 )
SELECT @Slice = LEFT(@String, @Index - 1)
ELSE
SELECT @Slice = @String
INSERT INTO @Results
( Mail )
VALUES ( @Slice )
SELECT @String = RIGHT(@String, LEN(@String) - @Index)
IF LEN(@String) = 0
BREAK
END
RETURN
END
GO