ACTUALIZAR rent_contacts SET Contacts_mobile = '11111' DONDE rent_unit_code en (SELECCIONE rent_unit_code FROM rent_unit);
El primer caso: condición sin índice
Ejecución de SQL:
EMPEZAR;
ACTUALIZAR contactos SET mobile = '11111' DONDE ingrese el código ('3424342');
sql 二 执行 ACTUALIZAR contactos SET mobile = '11111' DONDE código en ('1111');
La ejecución de sql two está bloqueada, después de sql one commit, sql two se puede ejecutar con éxito
Conclusión: condición sin índice, tabla de bloqueo
El segundo caso: la condición tiene un índice, y el enunciado es un cierto valor
Ejecución de SQL:
EMPEZAR;
ACTUALIZAR contactos SET mobile = '11111' DONDE ingrese el código ('3424342');
sql 二 执行 ACTUALIZAR contactos SET mobile = '11111' DONDE código en ('1111');
sql two se ejecuta normalmente, sql two no depende de commit de sql one
Conclusión: la condición tiene índice, fila de bloqueo
El tercer caso: la condición tiene un índice, y la instrucción in es una consulta compleja
Ejecución de SQL:
EMPEZAR;
ACTUALIZAR contactos SET mobile = '11111' DONDE ingrese el código (seleccione el código del usuario donde id = 1);
sql 二 执行 ACTUALIZAR contactos SET mobile = '11111' DONDE código en ('1111');
la ejecución de sql two está bloqueada, la ejecución de sql one, la ejecución normal de sql two
Conclusión: la condición tiene un índice, la instrucción in es un valor indeterminado y la tabla de bloqueo
Reimpreso en: https://www.cnblogs.com/2nao/p/9965208.html