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

Urutan Oracle setara di MySQL

Saya dapat menyelesaikan masalah ini hanya dengan menggabungkan saran dari @Akina dan @RickJames , terima kasih atas dukungan mereka berdua.

create table my_seq(
min_value integer,
Max_value integer,
last_value integer,
increment_by tinyint,
customer_id integer)ENGINE = InnoDB;

Di sini ENGINE=InnoDB sangat penting. Untuk memastikan ada penguncian level tabel saat membaca, saya telah memodifikasi kode aplikasi saya menjadi:

Auto-Commit=FALSE

Kemudian,

//very import to begin the transaction
begin;
select last_number from my_seq where customer_id=? FOR UPDATE;

Read the result in App.

update my_seq set last_number=last_number+1 where customer_id=?;
commit;

Ini menghasilkan sequence number yang unik bahkan dalam kasus beberapa sesi bersamaan.

Saya telah menghadapi masalah lain, bahwa solusi ini telah memperlambat lainnya adalah tempat saya menghasilkan urutan#. Saya telah menyelesaikannya dengan mengaktifkan kunci level baris alih-alih kunci level tabel dengan mengindeks customer_id.

ALTER TABLE TABLE_NAME ADD INDEX (customer_id);

Semoga ini akan sangat membantu orang lain.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pagination di Hibernate dengan tabel yang digabungkan

  2. Cara menggunakan metode sendirect() untuk meneruskan permintaan pencarian dari servlet ke jsp

  3. MySQL JOIN dan COUNT dalam satu permintaan

  4. Cara menyimpan gambar di database mysql menggunakan php

  5. gcc tidak akan mengkompilasi dan menjalankan perpustakaan MySQL C