Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak celowo zablokować wiersz MySQL tak, że nawet SELECT zwróci błąd?

Jeśli ustawisz poziom izolacji transakcji na SERIALIZABLE , InnoDB wil niejawnie dołącza LOCK IN SHARE MODE do wszystkich SELECT oświadczenia.

Ten tryb jest w konflikcie z blokadami umieszczonymi przez SELECT FOR UPDATE i SELECT s zostaną zablokowane.

Pamiętaj jednak, że InnoDB może zablokować więcej wierszy niż spełnia WHERE stan :schorzenie. Dzieje się tak, ponieważ blokuje wszystkie wiersze zeskanowane , nie tylko tych pasujących .

Powiedzmy, że masz indeks na col1 i to zapytanie:

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

używa tego indeksu.

To zablokuje wszystkie rekordy z col1 = 1 , nawet te z 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. Jakie są realne warstwy abstrakcji bazy danych dla Pythona?

  2. Codeigniter - wiele połączeń z bazą danych

  3. Wyzwania związane ze skalowaniem bazy danych Moodle MySQL

  4. Przykłady ORD() – MySQL

  5. Wartości wiążące PDO dla instrukcji MySQL IN