A dan B mengakses set data pada halaman yang sama pada masa yang sama A telah mengubah suai salah satu halaman B belum dimuat semula, jadi maklumat yang dilihat oleh B adalah sebelum A mengubahnya perlu mengubah suai data ini. Bagaimana saya boleh mengingatkan B bahawa data ini telah diubah suai
Saya melihat cara untuk mengetahui data berdasarkan masa pengubahsuaian terakhir sebelum mengubah suai data (pilih * daripada xxx di mana masa kemas kini = xxx dan id= xxx Jika ia tidak ditemui, ia bermakna ia telah diubah suai ditemui, bermakna ia telah diubah suai.Saya ingin bertanya adakah cara yang lebih baik?
Saya masih ingat bahawa penguncian optimistik dalam hibernate dilaksanakan menggunakan medan nombor versi Selepas setiap kemas kini berjaya, nilai medan nombor versi ditambah sebanyak 1.
Sebelum mengemas kini, semak dahulu sama ada nombor versi dalam pangkalan data dan versi. nombor yang disimpan dalam halaman adalah sama , jika nombor versi menjadi lebih besar, pengguna digesa bahawa pengguna lain telah mengubah suai data semasa mengedit.
Sudah tentu, anda juga boleh menggunakan penguncian pesimis Apabila memasuki halaman, gunakan pilih... untuk kemas kini untuk mengunci rekod Pada masa ini, pengguna lain tidak boleh mengedit rekod terkunci pada masa yang sama.
Saya akan melakukan ini - tambah medan, edit_num, +1 untuk setiap perubahan dan bandingkannya apabila B perlu ditukar.
Kunci Optimis Kunci Optimis Kunci Optimis
Mekanisme penguncian yang optimistik dilaksanakan dengan menambahkan medan versi pada data
Tambah medan pada jadual data
update_at
类型为TIMESATMP
,默认值为CURRENT_TIMESTAMP
, tidak perlu menukar yang lainSetiap kali data dikemas kini, nilai akan dikemas kini secara automatik
Tambah medan versi pada data ini Nombor versi bermula dari 0 secara lalai Ia akan meningkat secara automatik jika ia tidak diubah suai.
Tambah medan nombor versi pada jadual xxx