Ich muss Daten in meine Tabelle aus XML einfügen. Ich muss vor dem Einfügen der Daten auf Eindeutigkeit prüfen.Wie Sie überprüfen, ob ein Element bereits in der Tabelle vorhanden ist, wenn Sie aus einem XML-Code einfügen
Mein aktueller Code ist dies:
@declare @existing_id INT=0
DELETE FROM [maintenance.master].[oper_cat]
WHERE [oper_cat_id] IN (SELECT tab.col.value('Id[1]','int')
FROM @oper_cat.nodes('//Sample') AS tab(col)
WHERE CAST(tab.col.value('Deleted[1]','bit') AS BIT) = 1)
;WITH Sample AS
(
SELECT
tab.col.value('Id[1]','int') AS [Id],
tab.col.value('Title[1]','nvarchar(100)') AS [Title],
tab.col.value('Type[1]','char(1)') AS [Type],
FROM
@oper_cat.nodes('//Sample') AS tab(col)
WHERE
CAST(tab.col.value('Deleted[1]','bit') AS BIT) = 0
)
SET @existing_id = (SELECT id
FROM sample_table
WHERE title = Sample.Title AND type = Sample.Type)
IF @existing_id = 0
BEGIN
INSERT INTO sample_table(id, title, type)
VALUES(Sample.Id, Sample.Title, Sample.Type)
END
Offensichtlich ist der obige Code funktioniert nicht. Ich erhalte einen Fehler, wenn ich versuche, die vorhandene ID zu erhalten. Wie kann ich dies überprüfen, bevor Sie den Wert in die Tabelle einfügen? Ich bin nicht sehr gut mit SQL jede Hilfe würde sehr geschätzt werden.
Erste XML-Daten an einen table_variable einfügen oder temp_table und MERGE diese mit Ihrem tatsächlichen Tisch. –