Maison >base de données >tutoriel mysql >Comment éviter l'erreur 334 lors de l'utilisation de la mise à jour avec la sortie et des déclencheurs dans SQL Server?

Comment éviter l'erreur 334 lors de l'utilisation de la mise à jour avec la sortie et des déclencheurs dans SQL Server?

Susan Sarandon
Susan Sarandonoriginal
2025-01-24 13:46:09169parcourir

How to Avoid Error 334 When Using UPDATE with OUTPUT and Triggers in SQL Server?

Dépannage de l'erreur 334 de SQL Server : MISE À JOUR, SORTIE et déclencheurs

Lorsque vous travaillez avec SQL Server, l'exécution d'une instruction UPDATE incorporant une clause OUTPUT aux côtés de déclencheurs activés sur la table cible peut générer l'erreur 334. Ce conflit survient car les déclencheurs peuvent modifier les données de la table après UPDATE, créant ainsi des écarts. entre les données renvoyées par la clause OUTPUT et l'état réel de la table.

Une solution simple consiste à éliminer la clause OUTPUT de votre déclaration UPDATE. Au lieu de cela, récupérez les données nécessaires à l’aide d’une instruction SELECT distincte une fois le UPDATE terminé. Prenons cet exemple :

<code class="language-sql">SELECT BatchFileXml, ResponseFileXml, ProcessedDate
FROM BatchReports
WHERE BatchReports.BatchReportGUID = @someGuid;

UPDATE BatchReports
SET IsProcessed = 1
WHERE BatchReports.BatchReportGUID = @someGuid;</code>

Cette approche révisée récupère d'abord les données via SELECT, garantissant une récupération précise des données même avec des modifications de déclenchement simultanées. L'instruction UPDATE se poursuit ensuite sans la clause OUTPUT, résolvant ainsi l'erreur.

Il est crucial de comprendre que combiner des clauses OUTPUT avec des déclencheurs peut être problématique. Les données de la clause OUTPUT peuvent ne pas refléter l'état final de la table en raison des actions de déclenchement ultérieures. Par conséquent, il est recommandé d'éviter d'utiliser la clause OUTPUT lorsque les déclencheurs sont actifs sur la table cible.

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