Cakephpのクエリ SELECT LAST_INSERT_ID()AS insertID 'id'は挿入されたレコードですが、上記のクエリが実行される前に他の並列処理で別のレコードが追加された場合はどうなりますか?
1
A
答えて
1
MySQLでは、LAST_INSERT_ID()
は接続固有のものです。そうしないと、多くの望ましくない結果につながります。別のプロセスが別の接続を使用している場合よりもレコードを追加した場合、現在の接続ではLAST_INSERT_ID()
の戻り値は変更されません。
他のRDBMSでは扱いが異なると思われますが、使用するデータベースシステムについては言及していません。
MySQLのドキュメントの言葉で:
生成されたIDは、接続ごとにサーバに維持されます。つまり、関数が指定したクライアントに返す値は、そのクライアントがAUTO_INCREMENT列に影響を与える最新の文に対して生成された最初のAUTO_INCREMENT値です。この値は、たとえ自身のAUTO_INCREMENT値を生成したとしても、他のクライアントの影響を受けることはありません。この動作により、各クライアントは、ロックやトランザクションを必要とせずに、他のクライアントのアクティビティを意識することなく、独自のIDを取得できます。
詳細については、MySQLを参照してください。
関連する問題
- 1. 挿入後に挿入されたレコードのIDを取得
- 2. 最後に挿入されたIDを返す0
- 3. mybatisに最後に挿入されたレコードのIDを取得します
- 4. Django - 最後の挿入ID
- 5. WebSQL、Phonegap。最後に挿入された行のIDを返します
- 6. 最後に挿入された値のIDを返します。SQL
- 7. 最後に挿入されたIDを取得したい
- 8. SQL Server ExecuteScalar()は最後に挿入されたIDを返しません
- 9. 最後に挿入された行のIDを取得する
- 10. 最後に挿入されたプリペアドステートメントのIDを取得する
- 11. Zendに最後に挿入されたIDを取得する
- 12. CockroachDBで最後に挿入されたID/SERIAL値を返します。
- 13. SqlAlchemy:最後に挿入されたレコードのIDを取得する
- 14. ファイアフォックスアドオンでSQLiteの最後に挿入されたID
- 15. 最後の挿入IDの取得とdb phpへの挿入MVC
- 16. 最後に挿入されたIDを取得
- 17. ストアドプロシージャから最後に挿入された行のIDを返す
- 18. DBExpressとmysqlの最後の挿入ID
- 19. php mysql複数の最後の挿入用の最後の挿入ID
- 20. Oracle OCIは最後に挿入された行のIDを取得します
- 21. MySQLは最後に挿入された2つのIDを選択します
- 22. EF 4.1、MVC 3で最後に挿入されたID
- 23. Spring JDBC - 最後に挿入されたID
- 24. PostgreSQL:各ID列に最初に挿入されたレコードと最後に挿入されたレコードを取得します。
- 25. sqlalchemyと最後の挿入ID
- 26. テーブルの最後に挿入されたIDをlaravel5の別のテーブルに挿入したい5
- 27. 最後のIDをcodeigniterのデータベースに挿入するには
- 28. WP8/C#/ SQLite:最後に挿入されたIDを取得しますか?
- 29. MVCの最後の挿入のIDを取得するには?
- 30. PDO最後の挿入IDは常に正しいものですか?
私はtatが役立つと思います。 – shahalpk
cakephpのsave()呼び出しの後に、これ以外の挿入されたレコードを取り出す他の方法があります – shahalpk