Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Pertanyaan mysql mudah tentang kunci utama dan sisipan

Komentar klarifikasi Anda mengatakan bahwa Anda tertarik untuk memastikan bahwa LAST_INSERT_ID() tidak memberikan hasil yang salah jika INSERT bersamaan lainnya terjadi. Yakinlah bahwa aman untuk menggunakan LAST_INSERT_ID() terlepas dari aktivitas bersamaan lainnya. LAST_INSERT_ID() hanya mengembalikan ID terbaru yang dihasilkan selama sesi saat ini.

Anda dapat mencobanya sendiri:

  1. Buka dua jendela shell, jalankan mysqlclient di masing-masing dan hubungkan ke database.
  2. Shell 1:INSERT ke dalam tabel dengan kunci AUTO_INCREMENT.
  3. Shell 1:PILIH LAST_INSERT_ID(), lihat hasilnya.
  4. Shell 2:INSERT ke tabel yang sama.
  5. Shell 2:SELECT LAST_INSERT_ID(), lihat hasil yang berbeda dari shell 1.
  6. Shell 1:SELECT LAST_INSERT_ID() lagi, lihat pengulangan hasil sebelumnya.

Jika Anda memikirkannya, ini adalah satu-satunya cara yang masuk akal. Semua database yang mendukung mekanisme kunci peningkatan otomatis harus bertindak seperti ini. Jika hasilnya tergantung pada kondisi balapan dengan klien lain yang mungkin INSERT secara bersamaan, maka tidak akan ada cara yang dapat diandalkan untuk mendapatkan nilai ID yang dimasukkan terakhir di sesi Anda saat ini.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara menyimpan catatan harian dari tabel mysql ke tabel lain?

  2. mysql — Bagaimana menangani pencarian kueri dengan karakter khusus /(garis miring ke depan) dan \(garis miring terbalik)

  3. Bagaimana cara mengubah kata sandi akun root MySQL di CentOS7?

  4. Server MySQL telah pergi

  5. mysql-connector-java-8.0.12 :mendapatkan kesalahan untuk zona waktu server 'Malay Peninsula Standard Time'