sql >> データベース >  >> RDS >> Mysql

LAST_INSERT_ID()は$ db-> insert_idと等しくありませんか?

    問題は、LAST_INSERT_ID(...);です。 引数を指定すると、生成されたIDは返されませんが、代わりにLAST_INSERT_ID()の「メモリ」に指定された値が設定されます。 そしてそれを返します。したがって、最初の実行では、自動インクリメントされたIDは生成されず(値は自分で指定しました)、LAST_INSERT_ID() 0を返します 。次の実行では、値next+1を保存します LAST_INSERT_ID()の内部ストレージ内 、値を返します。この動作は、MySQLの12.14情報機能

    実際、LAST_INSERT_ID()はスキップできます 電話して、それなしで作業します。

    INSERT INTO
        officeRechNr (jahr,monat,zahl)
    VALUES
        (?,?,1)
    ON DUPLICATE KEY UPDATE zahl = zahl+1
    

    これにより、(指定された値の)行が挿入されるか、カウンターが増加します。

    特定の年と月の現在のカウンターが必要な場合は、単純なSELECTステートメントを実行します。 SELECTステートメントでフェッチする前に別のクライアントがカウンターを増やす可能性があるため、トランザクションまたはロックが必要になる場合があることに注意してください。




    1. Djangoviews.pyバージョンのSQL結合とマルチテーブルクエリ

    2. postgresqlでのn番目のパーセンタイル計算

    3. MySQLで開いているトランザクションを表示する

    4. Rails:OSXへのPGgemのインストール-ネイティブ拡張のビルドに失敗