In diesem Szenario streben wir an, einen XML -Bereich nur die geänderten Spaltenwerte zu rufen. Diese Informationen sind für Datenreplikationszwecke von entscheidender Bedeutung.
Eine Methode beinhaltet die Verwendung dynamischer SQL, um den Code zu erstellen, der die geänderten Spaltenwerte extrahiert. However, this approach can be tedious if the table has a large number of columns.
A more efficient solution is to unpivot both the inserted and deleted tables, creating a table with fields for the unique key (ContactID), field name (FieldName), and field value (FieldValue). Durch den Beitritt zu diesen beiden Tabellen ist es möglich, alle Zeilen zu identifizieren, bei denen FieldValue sich geändert hat, und uns die geänderten Werte geben. BEGINNEN NoCount einstellen; - Löschte ungebremen Mit deleted_unpvt als ( Wählen Sie ContactID, FieldName, FieldValue Von (SELECT ContactID, Forname, Nachname, EXTN, E -Mail, Alter aus gelöscht) P. Unpivot (FieldValue für FieldName in (Forname, Nachname, EXTN, E -Mail, Alter)) als deleted_unpvt ), - Eingefügt Inised_unpvt als (( Wählen Sie ContactID, FieldName, FieldValue Von (SELECT ContactID, Forname, Nachname, Extn, E -Mail, Alter aus dem eingefügten) P. Unpivot (FieldValue für FieldName in (Forname, Nachname, Extn, E -Mail, Alter)) als eingefügte_unpvt ) - Schließen Sie sich ihnen an und identifizieren Sie Änderungen Einfügen in sample_table_changes (contactId, fieldname, fieldValuewas, fieldvalueis) Wählen Sie Koalesce (D.ContactID, I. contactId) contactId, Koalesce (D.Fieldname, I.Fieldname) Fieldname, D.FieldValue als FieldValuewas, I.fieldValue als Fieldvalueis Von deleted_unpvt d Voller äußerer Join Inised_unpvt i Auf d.contactid = i.contactId und d.fieldname = i.fieldname Wo d.fieldValue i.fieldValue Oder (D.FieldValue ist nicht null und I.fieldValue ist null) Oder (D.FieldValue ist null und i.fieldValue ist nicht null); - Verwenden Sie den Inhalt von sample_table_changes zur Replikation ENDE Go
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3