MySQL での更新された値のリカバリ: 影響を受ける行数を超えて
MySQL では、クエリを通じてデータを変更する場合、通常、影響を受ける行の数を調査して、作戦の成功を測ります。ただし、更新された値自体を取得することが必要になる場合があります。次のシナリオを考えてみましょう:
UPDATE item SET `score`=`score`+1 WHERE `id`=1
このクエリを実行すると、変更された行の数が返されます。しかし、増加後のスコア列の実際の値を知る必要がある場合はどうすればよいでしょうか?
従来のアプローチ: 個別のクエリ
1 つの簡単な解決策は、個別のクエリを実行することです。更新された値を取得するクエリ。このアプローチは適切ですが、データベースへの追加のラウンドトリップが発生し、パフォーマンスに影響を与える可能性があります。
ストアド プロシージャの利用: より効率的なオプション
より効率的なオプションこのアプローチには、ストアド プロシージャを活用することが含まれます。ストアド プロシージャは、複数のデータベース操作を 1 つの論理ユニットにカプセル化する便利な方法を提供します。更新された値を取得するコンテキストでは、ストアド プロシージャは、同じ呼び出し内で更新操作と選択操作を組み合わせることができます。
たとえば、次のストアド プロシージャを考えてみましょう。
DELIMITER $$ CREATE PROCEDURE increment_score(IN id_in INT) BEGIN UPDATE item SET score = score + 1 WHERE id = id_in; SELECT score AS new_score FROM item WHERE id = id_in; END $$ DELIMITER ;
このストアド プロシージャスコアの増加に続いて、更新された値の選択を実行します。
PHP との統合
PHP でこのストアド プロシージャを利用するには、次のコードを実行します。
$result = mysql_query("CALL increment_score($id)"); $row = mysql_fetch_array($result); echo $row['new_score'];
このコードはストアド プロシージャを呼び出し、結果セットを取得し、最後に更新された値を抽出します。
結論
MySQL での更新された値の取得変更後の操作は、影響を受ける行数に単純に依存する以上に実現できます。ストアド プロシージャは、更新操作と選択操作を組み合わせて効率を最大化し、データベース呼び出しを最小限に抑える強力なメカニズムを提供します。ストアド プロシージャを活用することで、開発者はデータ取得戦略を最適化し、アプリケーションの全体的なパフォーマンスを向上させることができます。
以上が影響を受ける行数を確認するだけでなく、MySQL で更新された値を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。