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

AUTO_INCREMENTおよびLAST_INSERT_ID

    SELECT max(employeeid) FROM Employee;
    

    上記のクエリは、employeeidの値を返します employeeidのため、Employeeテーブルに最後に挿入されたレコードの 自動インクリメント列です。これは問題ないようですが、2つのスレッドがあるとします。 挿入操作を同時に実行している場合、最後に挿入されたレコードのIDが間違っている可能性があります!

    心配しないでください。MySQLには、最後に挿入されたレコードの自動インクリメント列の値を返す関数があります。

    SELECT LAST_INSERT_ID();
    

    LAST_INSERT_ID() 常に接続固有 、これは、挿入操作が異なる接続から同時に実行された場合でも、常に現在の接続固有の操作の値を返すことを意味します。

    したがって、最初にEmployeeテーブルにレコードを挿入し、上記のクエリを実行してid値を取得し、これを使用して2番目のテーブルに挿入する必要があります。



    1. Oracleの隠し機能

    2. 送信されたメッセージの応答時間を確認します-SQLのみを使用して可能ですか?

    3. 1:1のユーザー関係をリレーショナルデータベースに保存するための最良の方法

    4. Oracleマネージドドライバーはasync/awaitを適切に使用できますか?