Bueno vamos a comenzar con la primera clase donde vamos a explicar un poco la estructura y vamos a hacer
unos unos ejemplos para que entiendan bien cómo funciona.
Lo primero que tienen que tener en cuenta es que una transacción normalmente se utiliza para evaluar
una porción de código en la que estamos actualizando datos o borrando datos.
Es decir estamos ejecutando apuntes sobre sobre tablas o Lecha sobre sobre el registro de tablas.
También lo vamos a implementar con para validar insert sobre tablas.
Funciona de la misma manera.
Vimos todo lo que tenga que ver con la manipulación de datos.
Cuando uno obtiene resultados no deseados puede ejecutar una transacción para poder validar la sobretodo
cuando hacemos un deletreo que lo que estamos haciendo es borrar la información y cuando no estamos
seguros de que haya sucedido lo que realmente esperábamos no lo colocamos dentro de una transacción
y podemos cancelarla con lo cual volvemos a dejar todo como estaba sin alterar los cambios en la estructura
de la base de datos y volvemos a dejar los registros tal cual estaban inicialmente así que lo que vamos
a hacer va a ser un ejemplo sobre la tabla paciente.
Vamos a hacer un CELE de la tabla paciente y lo que vamos a hacer es vamos a actualizar el campo Telésforo
vamos a hacer una transacción y vamos a validar ahí dentro una plait.
Entonces vamos vamos a comenzar de cero vamos a borrar esto y vamos a comenzar vamos a colocar Veguín
tan fijense que podemos colocar transaction o directamente la palabra abreviada Traum es lo mismo podemos
colocar transaction FIJENSE QUE LO y lo azul.
De todas formas pero vamos a colocar tranques más corto y es más es más es más fácil así que vamos a
colocar Boynton y lo que hacemos después es inmediatamente es vamos a correr una PDT si vamos a jugar
vamos a ejecutar un ataque en la tabla paciente.
Si vamos a hacer un set del campo teléfono y le vamos a colocar vamos a darle el valor 4 4 4.
Por ejemplo si
lo que hay que tener en cuenta es que cuando se inicia una transacción los comandos que siguen después
hacen que la tabla la tabla involucrada en este caso paciente quede bloqueada queda bloqueada hasta
que ejecutemos un commit o un rollo back.
Por qué.
Porque cuando iniciamos la transacción si lo que sucede inmediatamente después es que la transacción
está esperando está esperando un cómic o un rol Back para poder continuar si no queda en espera hasta
que esa transacción finalice.
Entonces si nosotros no colocamos un comité en un rol back esa tabla involucrada va a quedar bloqueada
si por lo que vamos a tener resultados en las consultas de la base de datos vamos a obtener bloqueo
de otros usuarios que van a querer consultarla y no van a poder entonces vamos a tener un problema así
que vamos a tener que solucionar y es terminar la transacción es decir realizar un cómic o realizar
un remake.
Bueno en este caso lo que vamos a hacer es continuar y cuando vamos a continuar nosotros vamos a continuar.
Nosotros vamos a hacer una vedette de la tabla para el paciente 8 por ejemplo el paciente 8 vamos vamos
a actualizar los datos del campo teléfono del paciente 8 entonces cómo me aseguro o cómo tomó la determinación
de que esto ha sido correcto.
Bueno lo primero que puedo hacer es preguntar puedo colocar un IFF si puedo utilizar la variable del
sistema que que es muy útil que se llama arroba arroba Roux Count esta variable lo que nos dice es cuántos
registros cuántos registros fueron modificados en la instrucción anterior.
Si la destrucción inmediata anterior.
Cuántos fueron insertados cuántos fueron fueron actualizados cuántos fueron o cuántos fueron borrados
o cuántos fueron seleccionados mediante una consulta Select.
Entonces yo puedo preguntar aquí si racconto es igual a uno si quiere decir que este se realizó sobre
un paciente nada más.
Si yo pongo elhogar si Rouco es igual a uno entonces inmediatamente debajo puedo hacer un comité Traum.
Es decir lo que estoy haciendo es confirmar la transacción.
Decirle okay lo que existe aquí está confirmado porque hasta que no ejecutamos un commit este Apdayc
no se hace efectivo.
Entonces vamos a suponer que Rouco devolvió dos registros porque por algún motivo es a esa consulta
ese lugar me arrojó dos registros y yo realmente no quiero que sean datos de teléfono Ceaga sobre dos
registros porque particularmente estoy interesado en actualizar un solo paciente entonces aquí colocón.
Sí es decir sin raconto medio distinto de uno ya se me puede haber dado cero o en el caso de que me
haya dado cero no tendríamos problemas porque no tendría impacto si porque no no hubiese encontrado
ningún paciente.
De todas maneras no actualizaría nada pero vamos a suponer que me dio dos si el Rouco me dio dos.
Entonces hago aquí abajo en un rol back Traum.
Si esto es lo que es lo que me hace me me cancelã este Applewhite y me deja el resultado tal cual como
estaba vamos a probarlo a ver que sucede.
Vamos a ejecutarlo este selecto lo vamos a comentar y vamos a ejecutarlo
me dice un registro afectado.
Vamos a consultar la tabla.
Y me ha modificado el paciente 8 y me han colocado el teléfono en el valor que le he colocado 4 4 4.
Ahora vamos a cambiarlo va a hacer otra otra prueba vamos a modificar vamos a actualizar el paciente
6 y vamos a preguntar acá vamos a preguntar
vamos a dejar este Robocop Roca en 1 y vamos a cambiar el waren entonces en el Wer le vamos a colocar
Wer apellido
igual a Pérez fijense que con y con apellido Pérez tengo dos pacientes tengo el paciente y el 7 entonces
claramente Applewhite me va a intentar actualizar estos dos registros sí y acá lo que estoy validando
es justamente si el robo es igual a 1 me confirma la transacción si no me hago un Robock vamos a ver
qué sucede vamos a ejecutarlo sí y me dice 3 Rou afecta el fijense tenía 3 no tenía 2.
Vamos a vamos a ver qué sucedió con la tabla y fíjense no me realizó ningún cambio tenía 3 tenía el
paciente nueve también tenía apellido Pérez fijense no me actualizó no me actualizó el teléfono.
Para esos pacientes acá lo que estuvimos evaluando es que si este Applewhite me arrojaba más de un registro
no me realicé la transacción y fue exactamente lo que hizo fue hacer un rollo back hacer un rol back
de la transacción y me dejó la tabla tal cual como estaba originalmente.