ホームページ >データベース >mysql チュートリアル >MySQL で影響を受ける行の代わりに更新された値を取得するにはどうすればよいですか?

MySQL で影響を受ける行の代わりに更新された値を取得するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-02 05:40:02319ブラウズ

How to Retrieve the Updated Value Instead of Affected Rows in MySQL?

影響を受ける行の代わりに MySQL で更新された値を取得する

MySQL では、テーブル内の特定のカラムの値をインクリメントするのが一般的なタスクです。 UPDATE ステートメントを使用すると簡単に更新できますが、通常は影響を受ける行数が返されるため、ユーザーは更新された値に直接アクセスできなくなります。

広範な調査にもかかわらず、データを取得するネイティブ MySQL ソリューションがあるかどうかという疑問は残りました。カウントではなく更新された値は未回答のままです。ただし、ストアド プロシージャを使用した賢明な回避策は、実行可能な代替手段を提供できます。

ストアド プロシージャ ソリューション

ストアド プロシージャを作成することで、更新操作を実行し、更新された値を出力として返すことができます。パラメータ。そのようなプロシージャの例を次に示します:

<code class="sql">DELIMITER $$   -- Change DELIMITER in order to use ; within the procedure
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
$$            -- Finish CREATE PROCEDURE statement
DELIMITER ;   -- Reset DELIMITER to standard ;</code>

PHP 実装

PHP でこのストアド プロシージャを利用するには、CALL プレフィックスを付けて mysql_query 関数を使用できます:

<code class="php">$result = mysql_query("CALL increment_score($id)");
$row = mysql_fetch_array($result);
echo $row['new_score'];</code>

このコードはまずストアド プロシージャを実行し、指定された ID のスコア列をインクリメントします。 Anschließend ruft es den Wert von スコア ab und gibt ihn als new_score aus.

Durch die Verwendung von gespeicherten Prozeduren lassen sich sowohl die Abfrageanzahl reduzieren als auch der direkte Zugriff auf den aktualisierten Wert glichen、ohne auf aufwendige 回避策 zurückgreifen zuミュッセン。

以上がMySQL で影響を受ける行の代わりに更新された値を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。