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

(mysql、php)データを挿入する前にauto_incrementフィールド値を取得する方法は?

    自動インクリメント値は、挿入が行われるときにデータベース自体によって生成されます。つまり、実際の挿入クエリを実行する前に取得することはできません。

    あなたが提案した解決策は、頻繁に使用されるものではありません-それは:

    • 半分空のデータを挿入する
    • 生成された自動インクリメント値を取得します
    • その自動インクリメント値を使用して計算を行います
    • 行を更新して、新しい/完全なデータを配置します-whereで以前に生成された自動インクリメントを使用します updateの句 クエリ、更新されている行を特定します。

    もちろん、セキュリティ上の予防措置として、これらの操作はすべてトランザクションで行う必要があります(「オールオアナッシング」動作を保証するため)


    擬似コードとして:

    begin transaction
    insert into your table (half empty values);
    $id = get last autoincrement id
    do calculations
    update set data = full data where id = $id
    commit transaction
    


    1. SUMによるMySQLグループ

    2. ニージャーク待機統計:PAGEIOLATCH_SH

    3. SQLServerの文字列またはバイナリデータは切り捨てられます

    4. Postgresがサブクエリをインライン化するのを防ぐにはどうすればよいですか?