Maison >base de données >tutoriel mysql >Comment puis-je récupérer des données mises à jour d'une table avec un déclencheur empêchant l'utilisation de la clause OUTPUT ?
MISE À JOUR LIMITATIONS DE L'ÉCLIATION AVEC LES TROCHERS ET LA CLAUSE DE SORTIE
Lorsqu'une table a un déclencheur actif, en utilisant la clause OUTPUT
avec une instruction UPDATE
devient problématique. La clause OUTPUT
nécessite une destination (INTO
clause), qui n'est pas toujours possible en présence d'un déclencheur.
Solution de contournement:
La solution la plus fiable consiste à omettre la clause OUTPUT
de votre instruction UPDATE
et à récupérer les données mises à jour à l'aide d'une instruction distincte SELECT
une fois la mise à jour terminée.
<code class="language-sql">-- Retrieve data before update (optional) SELECT BatchFileXml, ResponseFileXml, ProcessedDate FROM BatchReports WHERE BatchReports.BatchReportGUID = @someGuid; -- Update the table UPDATE BatchReports SET IsProcessed = 1 WHERE BatchReports.BatchReportGUID = @someGuid; -- Retrieve data after update SELECT BatchFileXml, ResponseFileXml, ProcessedDate FROM BatchReports WHERE BatchReports.BatchReportGUID = @someGuid;</code>
Pourquoi éviter la sortie avec des déclencheurs?
S'appuyer sur la clause OUTPUT
pour obtenir "After" les valeurs dans les tables avec des déclencheurs n'est pas fiable. Les données renvoyées par OUTPUT
dans ces conditions peuvent être inexactes, conduisant à des incohérences de données potentielles et à des erreurs d'application. Une instruction post-update SELECT
garantit que vous récupérez les valeurs correctes et mises à jour. Cette approche garantit des résultats cohérents et fiables.
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!