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

LAST_INSERT_ID() tidak sama dengan $db->insert_id?

Masalahnya adalah LAST_INSERT_ID(...); dengan argumen tidak mengembalikan ID yang dihasilkan melainkan menetapkan nilai yang diberikan dalam "memori" LAST_INSERT_ID() dan mengembalikannya. Jadi, dalam eksekusi pertama Anda, tidak ada ID yang ditambahkan secara otomatis (Anda memberikan nilainya sendiri) dan LAST_INSERT_ID() kembalikan 0 . Dalam eksekusi berikut, Anda menyimpan nilai next+1 di penyimpanan internal LAST_INSERT_ID() , yang mengembalikan nilai. Perilaku ini dijelaskan di MySQL di 12.14 Fungsi Informasi :

Bahkan, Anda dapat melewati LAST_INSERT_ID() menelepon dan bekerja tanpa itu.

INSERT INTO
    officeRechNr (jahr,monat,zahl)
VALUES
    (?,?,1)
ON DUPLICATE KEY UPDATE zahl = zahl+1

Ini akan menyisipkan baris (dengan nilai yang diberikan) atau menambah penghitung.

Jika Anda ingin penghitung saat ini untuk tahun dan bulan tertentu, Anda menjalankan pernyataan SELECT sederhana. Ingatlah bahwa Anda mungkin memerlukan transaksi atau penguncian karena klien yang berbeda dapat meningkatkan penghitung sebelum Anda mengambilnya dengan pernyataan SELECT.




  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 menggunakan model Django dengan kunci asing di DB yang berbeda?

  2. PDO SQL-state 00000 tapi masih error?

  3. Ubah pagination mysqli menjadi pagination pernyataan yang disiapkan

  4. Menggunakan Python dan MySQL dalam Proses ETL:SQLAlchemy

  5. Apa manfaat zerofill di MySQL?