Maison >base de données >tutoriel mysql >Comment puis-je récupérer efficacement uniquement les champs modifiés dans un déclencheur SQL Server sans utiliser COLUMNS_UPDATED ?

Comment puis-je récupérer efficacement uniquement les champs modifiés dans un déclencheur SQL Server sans utiliser COLUMNS_UPDATED ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-20 19:20:14962parcourir

How Can I Efficiently Retrieve Only Modified Fields in a SQL Server Trigger Without Using COLUMNS_UPDATED?

Utilisation d'une solution différente pour récupérer les champs modifiés dans le déclencheur SQL Server

Le problème :

Les développeurs sont souvent confrontés au besoin d'obtenir uniquement les valeurs de colonne modifiées dans un déclencheur de mise à jour SQL Server. Bien que l'utilisation de COLUMNS_UPDATED soit une approche courante, elle ne répond pas toujours à des exigences spécifiques, en particulier lors de la génération d'une représentation XML des valeurs mises à jour.

Une solution différente :

Pour résoudre Pour relever ce défi, une solution alternative peut être utilisée qui ne repose pas sur COLUMNS_UPDATED ou sur SQL dynamique. Cette technique implique :

  • Annuler le pivotement des tables insérées et supprimées pour créer une représentation aplatie des colonnes uniques de clé, de valeur de champ et de nom de champ.
  • Rejoindre les tables non pivotées pour identifier les modifications basé sur des valeurs de champ inégales ou des valeurs manquantes dans l'une ou l'autre table.
  • Insérer les informations de champ modifiées dans une table séparée pour la journalisation ou davantage traitement.

Avantages :

  • Évite les problèmes potentiels de dépassement d'entier associés aux champs de bits.
  • Simplifie le processus en éliminant le besoin pour SQL dynamique.
  • Préserve les valeurs du champ d'origine sans conversion en données différentes tapez.

Implémentation :

Un exemple fonctionnel de cette solution est fourni dans l'extrait de code fourni, qui comprend :

  • Mise en place des tables et données de test.
  • Création du déclencheur qui emploie le non-pivotant technique.
  • Appels de test pour démontrer la journalisation des modifications.
  • Affichage des résultats dans un tableau séparé.

Modifications :

Cette solution est adaptable pour gérer les modifications des clés primaires et prend en charge les scénarios dans lesquels la valeur de la clé primaire peut être modifiée. En ajoutant une colonne GUID remplie par la fonction NEWID() et en utilisant cette colonne à la place de la clé primaire, la technique peut être facilement étendue à de tels cas.

Conclusion :

La solution présentée offre une approche alternative pour récupérer les champs modifiés dans les déclencheurs SQL Server, en répondant aux limitations associées à COLUMNS_UPDATED et en fournissant une méthode plus efficace et plus flexible pour la journalisation ou le traitement. changements.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn