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

Bagaimana cara mengunci baris MySQL dengan sengaja sehingga SELECT pun akan mengembalikan kesalahan?

Jika Anda menyetel tingkat isolasi transaksi ke SERIALIZABLE , InnoDB akan secara implisit menambahkan LOCK IN SHARE MODE ke semua SELECT pernyataan.

Mode ini bertentangan dengan kunci yang ditempatkan oleh SELECT FOR UPDATE dan SELECT s akan mengunci.

Namun, perhatikan bahwa InnoDB mungkin mengunci lebih banyak baris daripada memenuhi WHERE kondisi. Ini karena mengunci semua baris dipindai , bukan hanya yang cocok .

Katakanlah, Anda memiliki indeks di col1 dan kueri ini:

SELECT  *
FROM    mytable
WHERE   col1 = 1
        AND col2 = 2
FOR UPDATE

menggunakan indeks ini.

Ini akan mengunci semua catatan dengan col1 = 1 , bahkan mereka yang memiliki col2 <> 2



  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 variabel pengguna dalam klausa LIKE MySQL?

  2. Cara menyimpan tanggal berulang dengan mengingat Waktu Musim Panas

  3. Bagaimana cara memastikan tidak ada kondisi balapan di database MySQL saat menambah bidang?

  4. Bagaimana cara mengubah sub string?

  5. ERROR 2003 (HY000):Tidak dapat terhubung ke server MySQL di localhost (10061)