Bloqueo de la declaración de actualización en mysql

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

Publicó un artículo original · Me gusta1 · Visitas 38

Supongo que te gusta

Origin blog.csdn.net/qq_37523371/article/details/105215691
Recomendado
Clasificación