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. Django - 最後の挿入ID
- 2. mybatisに最後に挿入されたレコードのIDを取得します
- 3. WebSQL、Phonegap。最後に挿入された行のIDを返します
- 4. SQL Server ExecuteScalar()は最後に挿入されたIDを返しません
- 5. Zendに最後に挿入されたIDを取得する
- 6. SqlAlchemy:最後に挿入されたレコードのIDを取得する
- 7. ファイアフォックスアドオンでSQLiteの最後に挿入されたID
- 8. 最後に挿入されたIDを取得
- 9. ストアドプロシージャから最後に挿入された行のIDを返す
- 10. Oracle OCIは最後に挿入された行のIDを取得します
- 11. sqlalchemyと最後の挿入ID
- 12. Spring JDBC - 最後に挿入されたID
- 13. EF 4.1、MVC 3で最後に挿入されたID
- 14. WP8/C#/ SQLite:最後に挿入されたIDを取得しますか?
- 15. PDO最後の挿入IDは常に正しいものですか?
- 16. 複数の行に最後に挿入されたIDを取得する
- 17. groovyに最後に挿入されたオブジェクトのIDを取得する
- 18. vb.net sqlが最後に挿入したID
- 19. 最後に挿入されたIDを取得する方法は?
- 20. 最後に挿入されたIDをMySQLから取得できません
- 21. 挿入/更新クエリから最後に挿入されたIDの戻り値を取得
- 22. mysqlで最後に挿入されたレコードのIDを正確に取得する方法は?
- 23. 挿入リクエスト後のid値の取得
- 24. monetdbの最後の挿入IDを取得できますか?
- 25. mysql_insert_idは、関数内に最後に挿入されたidを返しません。
- 26. Magentoカスタマーアドレスモデルで最後に挿入されたIDを取得する方法
- 27. 最後に挿入された(自動インクリメントされた)行IDをHSQLで返す方法は?
- 28. newInsertの後に最後に挿入されたRawContacts IDをアドレス帳にプログラム的に取得する方法は?
- 29. 入手方法 - LinQフィルタを使用して最後に挿入されたレコード?
- 30. Psycopg2とGreenplumデータベースで最後に挿入された行IDを取得
私はtatが役立つと思います。 – shahalpk
cakephpのsave()呼び出しの後に、これ以外の挿入されたレコードを取り出す他の方法があります – shahalpk