タグ

ブックマーク / qiita.com/y_sone (3)

  • 【MySQL】UPDATE・DELETE・INSERT実行後に処理件数を取得する方法 - Qiita

    UPDATE・DELETE・INSERT実行後に出力されるQuery OK, 1 row affectedの件数を取得する方法です。 mysql> UPDATE animals SET name = 'cat' WHERE name = 'lion'; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 SQLPHP、2種類の方法を説明します。 SQLで取得する ROW_COUNT()関数で取得できます。 必ずステートメント(UPDATE、DELETE、INSERTなどの実行単位)の完了直後に実行してください。 ROW_COUNT()の使い方 SELECT ROW_COUNT();を実行します。 -- UPDATE mysql> UPDATE animals SET name = 'dog'

    【MySQL】UPDATE・DELETE・INSERT実行後に処理件数を取得する方法 - Qiita
    peketamin
    peketamin 2022/03/14
  • 【MySQL】AUTO_INCREMENTの値はロールバック後も戻らない - Qiita

    ロールバック処理の検証中にのidカラムの番号が飛んでいたので、調べたらタイトルの事実が判明しました。 忘れないようにまとめておきます。 なぜ戻らないのか MySQLの仕様でした。SQL全般の仕様なのかは分かりません。 公式サイトに説明があります。 すべてのロックモード (0、1、および 2) では、自動インクリメント値を生成したトランザクションがロールバックされると、これらの自動インクリメント値が「失われます」。「INSERT のような」ステートメントが完了したかどうか、およびそれを含むトランザクションがロールバックされたかどうかに関係なく、自動インクリメントカラムの値は一度生成されたら、ロールバックできません。このような失われた値は再使用されません。したがって、テーブルの AUTO_INCREMENT カラムに格納されている値にはギャップが存在する可能性があります。 簡単にまとめると、実

    【MySQL】AUTO_INCREMENTの値はロールバック後も戻らない - Qiita
    peketamin
    peketamin 2022/03/14
  • 【MySQL】同一トランザクションの実行結果は次の処理にも反映される - Qiita

    1つのトランザクションの中でINSERT、SELECTを連続で実行したところ、先にINSERTしたCOMMITされていないレコードも取得できました。 なぜ取得できるのか分からなかったので調査・検証してみました。 検証 SQLを実行 トランザクション前のテーブルの状態です。 mysql> SELECT * FROM animals; +----+------+ | id | name | +----+------+ | 1 | dog | +----+------+ 1 row in set (0.00 sec)

    【MySQL】同一トランザクションの実行結果は次の処理にも反映される - Qiita
    peketamin
    peketamin 2022/03/14
  • 1