sql >> Base de Datos >  >> RDS >> Mysql

tabla de bloqueo después de BeginTransaction MySql Transaction en c # .net

BeginTransaction no significa que "su transacción ha comenzado y todo está bloqueado". Simplemente informa al RDBMS con respecto a su intención de iniciar una transacción y que todo lo que debe hacer a partir de ahora debe y debe considerarse atómico.

Esto significa que podría llamar a BeingTransaction y yo podría eliminar todos los datos de todas las tablas de su base de datos y el RDBMS me permitirá hacerlo con gusto. Con suerte, no debería dejarme soltar la base de datos porque tiene una conexión abierta con ella, sin embargo, nunca se sabe en estos días. Puede haber algunas características no documentadas que desconozco.

Atómico significa que cualquier acción o conjunto de acciones debe realizarse como una sola. Si alguno de ellos falla, que todos ellos fallen. Es un concepto de todo o nada.

Parece que está insertando tres filas en una tabla. Si su tabla está vacía o tiene un número muy bajo de filas, es posible que bloquee toda la tabla según las reglas de ESCALADA DE BLOQUEO de su RDBMS. Sin embargo, si se trata de una tabla grande o muy grande o con particiones, es posible que las reglas de escalada LOCK no garanticen un bloqueo de tabla. Por lo tanto, aún es posible que varias transacciones inserten filas en su tabla al mismo tiempo. Todo depende de cómo el RDBMS maneje esta situación y cómo esté estructurado su modelo de datos.

Ahora para responder a su pregunta:

SUGERENCIA:busque una forma de bloquear toda la tabla antes de comenzar a insertar datos.

Sin embargo, esto generalmente no es bueno, pero asumo que tiene una razón razonable para hacerlo.

Espero que esto ayude.