ホームページ >データベース >mysql チュートリアル >出力節の使用を防ぐトリガーを備えたテーブルから更新されたデータを取得するにはどうすればよいですか?
トリガーと OUTPUT 句による UPDATE ステートメントの制限
テーブルにアクティブなトリガーがある場合、OUTPUT
ステートメントで UPDATE
句を使用すると問題が発生します。 OUTPUT
句には宛先 (INTO
句) が必要ですが、トリガーが存在する場合にはこれが常に可能であるとは限りません。
回避策:
最も信頼性の高い解決策は、OUTPUT
ステートメントから UPDATE
句を省略し、更新の完了後に別の SELECT
ステートメントを使用して更新されたデータを取得することです。
<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>
トリガーを使用した OUTPUT を避ける理由
OUTPUT
句に依存して、トリガーを使用してテーブルの「後」の値を取得することは信頼できません。このような条件下で OUTPUT
によって返されるデータは不正確になる可能性があり、データの不整合やアプリケーション エラーが発生する可能性があります。 更新後の SELECT
ステートメントにより、正しい更新された値が確実に取得されます。 このアプローチにより、一貫性のある信頼できる結果が保証されます。
以上が出力節の使用を防ぐトリガーを備えたテーブルから更新されたデータを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。