Вы находитесь на странице: 1из 11

TECNOLOGICO NACIONAL DE MÉXICO

INSTITUTO TECNOLOGICO DE ZACATEPEC


DEPTO. SISTEMAS Y COMPUTACIÓN
TALLER DE BASE DE DATOS XC

EJERCICIOS
TRANSACCIONES

MTRA. ESPINOSA BACA OFELIA


ALUMNO: MIRANDA RODRÍGUEZ ALEXIS
OBJETIVO: Realizará la ejecución concurrente de un conjunto de dos o más
transacciones en sql (postgresql) entre dos usuarios.

1. Para la base de datos de Proveedores (snum, snombre,


situación, sueldo, ciudad), Partes (pnum, pnombre, color, peso,
ciudad), Proyectos (jnum, jnombre, presup, ciudad), Envios
(snum, pnum, jnum, cant),etc. Realice los siguientes ejercicios
de manejo de transacciones e interprete y explique los
resultados obtenidos en cada caso.

2. Primeramente defina a los usuarios y los permisos que les


correspondan de acuerdo al requerimiento que se solicita.

Usuario1
compitz=# grant insert on p,s to usuario1;

GRANT

compitz=# grant select on p,s to usuario1;

GRANT

compitz=# grant update on p,s,j to usuario1;

GRANT

Usuario2

compitz=# grant select on p,s,j to usuario2;

GRANT

compitz=# grant update on p,s,j to usuario2;

GRANT
TRANSACCIÓN 1
USUARIO2
compitz=> select * from s;

snum | snombre | sueldo | sciudad | situacion

------+--------------------------------+--------+------------+-----------

S123 | ALEXIS MIRANDA RODRIGUEZ | 2400 | JOJUTLA |

S023 | MARIA OJEDA MARTINEZ | 2400 | JOJUTLA |

S026 | ROCIO RIVAS DEBRAY | 5000 | CDMX |

S027 | LUIS DAVID RAMIREZ TOLEDO | 5200 | CDMX | 62180

S028 | MIGUEL ANGEL MENDOZA GUTIERREZ | 7200 | CDMX | 62150

S007 | ROBERT SAMANO GALINDO | 3000 | JIUTEPEC | 62160

S008 | ROBERTO CUEVAS SANCHEZ | 3000 | JIUTEPEC | 62160

S024 | ANTONIO REYES ALARCON | 3245 | CUERNAVACA |

S025 | MICHELLE LOPEZ SANTANA | 4867 | CUERNAVACA |

compitz=> select * from j;

jnum | jnombre | presupuesto | jciudad

------+---------+-------------+------------

J001 | PROY001 | 1700 | JOJUTLA

J002 | PROY031 | 2300 | JOJUTLA

J003 | PROY524 | 7500 | JOJUTLA

J004 | PROY054 | 9500 | CDMX

J005 | PROY123 | 10500 | CUERNAVACA

J006 | PROY124 | 8700 | CDMX

J007 | PROY125 | 9500 | CDMX

J008 | PROY126 | 18000 | TEMIXCO


USUARIO1
compitz=> insert into p values('P010',25,'TALADRO','NARANJA','PARIS');

INSERT 0 1

compitz=> begin;

compitz=> insert into s values('S009','KEVIN BASTIDA RESENDIZ',3200,'PUEBLA',62122);

INSERT 0 1

compitz=> select * from s;

snum | snombre | sueldo | sciudad | situacion

------+--------------------------------+--------+------------+-----------

S123 | ALEXIS MIRANDA RODRIGUEZ | 2400 | JOJUTLA |

S023 | MARIA OJEDA MARTINEZ | 2400 | JOJUTLA |

S026 | ROCIO RIVAS DEBRAY | 5000 | CDMX |

S027 | LUIS DAVID RAMIREZ TOLEDO | 5200 | CDMX | 62180

S028 | MIGUEL ANGEL MENDOZA GUTIERREZ | 7200 | CDMX | 62150

S007 | ROBERT SAMANO GALINDO | 3000 | JIUTEPEC | 62160

S008 | ROBERTO CUEVAS SANCHEZ | 3000 | JIUTEPEC | 62160

S024 | ANTONIO REYES ALARCON | 3245 | CUERNAVACA |

S025 | MICHELLE LOPEZ SANTANA | 4867 | CUERNAVACA |

S009 | KEVIN BASTIDA RESENDIZ | 3200 | PUEBLA | 62122

compitz=> commit;

COMMIT

USUARIO2
compitz=> select * from s;

snum | snombre | sueldo | sciudad | situacion

------+--------------------------------+--------+------------+-----------

S123 | ALEXIS MIRANDA RODRIGUEZ | 2400 | JOJUTLA |

S023 | MARIA OJEDA MARTINEZ | 2400 | JOJUTLA |

S026 | ROCIO RIVAS DEBRAY | 5000 | CDMX |

S027 | LUIS DAVID RAMIREZ TOLEDO | 5200 | CDMX | 62180

S028 | MIGUEL ANGEL MENDOZA GUTIERREZ | 7200 | CDMX | 62150

S007 | ROBERT SAMANO GALINDO | 3000 | JIUTEPEC | 62160

S008 | ROBERTO CUEVAS SANCHEZ | 3000 | JIUTEPEC | 62160

S024 | ANTONIO REYES ALARCON | 3245 | CUERNAVACA |

S025 | MICHELLE LOPEZ SANTANA | 4867 | CUERNAVACA |

(10 filas)

TRANSACCIÓN 2
USUARIO1
compitz=> begin; (En ambos usuarios)

BEGIN

compitz=> update s set sueldo=(sueldo*.08)+sueldo where sciudad='CUERNAVACA';

UPDATE 2

USUARIO2
compitz=> select * from s;

compitz=> update s set sueldo=(sueldo*.04)+sueldo where sciudad='CUERNAVACA';

UPDATE 2

USUARIO1
compitz=> select * from s;

snum | snombre | sueldo | sciudad | situacion

------+--------------------------------+--------+------------+-----------

S123 | ALEXIS MIRANDA RODRIGUEZ | 2400 | JOJUTLA |

S023 | MARIA OJEDA MARTINEZ | 2400 | JOJUTLA |

S026 | ROCIO RIVAS DEBRAY | 5000 | CDMX |

S027 | LUIS DAVID RAMIREZ TOLEDO | 5200 | CDMX | 62180

S028 | MIGUEL ANGEL MENDOZA GUTIERREZ | 7200 | CDMX | 62150

S007 | ROBERT SAMANO GALINDO | 3000 | JIUTEPEC | 62160

S008 | ROBERTO CUEVAS SANCHEZ | 3000 | JIUTEPEC | 62160

S009 | KEVIN BASTIDA RESENDIZ | 3200 | PUEBLA | 62122

S024 | ANTONIO REYES ALARCON | 3645 | CUERNAVACA |

S025 | MICHELLE LOPEZ SANTANA | 5467 | CUERNAVACA |

(10 filas)

compitz=> insert into s values('S010','ROSARIO JIMENEZ LOPEZ',5000,'AMACUZAC',62130);

INSERT 0 1

compitz=> commit;

COMMIT

USUARIO2
compitz=> select *from s;

snum | snombre | sueldo | sciudad | situacion

------+--------------------------------+--------+------------+-----------

S123 | ALEXIS MIRANDA RODRIGUEZ | 2400 | JOJUTLA |

S023 | MARIA OJEDA MARTINEZ | 2400 | JOJUTLA |

S026 | ROCIO RIVAS DEBRAY | 5000 | CDMX |

S027 | LUIS DAVID RAMIREZ TOLEDO | 5200 | CDMX | 62180

S028 | MIGUEL ANGEL MENDOZA GUTIERREZ | 7200 | CDMX | 62150


S007 | ROBERT SAMANO GALINDO | 3000 | JIUTEPEC | 62160

S008 | ROBERTO CUEVAS SANCHEZ | 3000 | JIUTEPEC | 62160

S009 | KEVIN BASTIDA RESENDIZ | 3200 | PUEBLA | 62122

S010 | ROSARIO JIMENEZ LOPEZ | 5000 | AMACUZAC | 62130

S024 | ANTONIO REYES ALARCON | 3791 | CUERNAVACA |

S025 | MICHELLE LOPEZ SANTANA | 5686 | CUERNAVACA |

(11 filas)

compitz=> commit;

COMMIT

TRANSACCIÓN 3
USUARIO1
compitz=> begin; (En ambos usuarios)

BEGIN

compitz=> update p set peso=36 where Pnum='P003';

UPDATE 1

USUARIO2
compitz=> update p set pnombre='PIJO' where pnombre='PIJA';

(Nota: Lo cambie a PIJO por que anteriormente ya había cambiado TORNILLO a PIJA)

UPDATE 1

USUARIO1
compitz=> select * from p;

pnum | peso | pnombre | color | pciudad

------+------+-------------+---------+------------

P001 | 15 | TUERCAS | GRIS | JOJUTLA

P004 | 13 | ABRAZADERAS | GRIS | CUERNAVACA

P005 | 10 | GRAPAS | GRIS | CUERNAVACA

P006 | 20 | TUERCAS | NARANJA | JOJUTLA

P007 | 20 | TUERCAS | CAFE | CUERNAVACA

P008 | 24 | RONDANA | | ATENAS

P009 | 30 | CLAVOS | CAFE | ATENAS

P002 | 12 | PIJA | CAFE | JOJUTLA

P010 | 25 | TALADRO | NARANJA | PARIS

P003 | 36 | CLAVOS | GRIS | CUERNAVACA

compitz=> commit;

COMMIT

USUARIO2
compitz=> select * from p;

pnum | peso | pnombre | color | pciudad

------+------+-------------+---------+------------

P001 | 15 | TUERCAS | GRIS | JOJUTLA

P004 | 13 | ABRAZADERAS | GRIS | CUERNAVACA

P005 | 10 | GRAPAS | GRIS | CUERNAVACA

P006 | 20 | TUERCAS | NARANJA | JOJUTLA

P007 | 20 | TUERCAS | CAFE | CUERNAVACA

P008 | 24 | RONDANA | | ATENAS

P009 | 30 | CLAVOS | CAFE | ATENAS

P003 | 24 | CLAVOS | GRIS | CUERNAVACA


P010 | 25 | TALADRO | NARANJA | PARIS

P002 | 12 | PIJO | CAFE | JOJUTLA

compitz=> commit;

COMMIT

TRANSACCIÓN 4

USUARIO1
compitz=> begin work; (En ambos usuarios)

BEGIN

compitz=> update j set jciudad='CDMX' where jnum='J004';

UPDATE 1

USUARIO2
compitz=> update j set presupuesto=77000 where jnum='J003';

UPDATE 1

USUARIO1
compitz=> update j set jciudad='CHOLULA' where jnum='J003';

UPDATE 1

USUARIO2
compitz=> select * from j;
jnum | jnombre | presupuesto | jciudad

------+---------+-------------+------------

J001 | PROY001 | 1700 | JOJUTLA

J002 | PROY031 | 2300 | JOJUTLA

J004 | PROY054 | 9500 | CDMX

J005 | PROY123 | 10500 | CUERNAVACA

J006 | PROY124 | 8700 | CDMX

J007 | PROY125 | 9500 | CDMX

J008 | PROY126 | 18000 | TEMIXCO

J003 | PROY524 | 77000 | JOJUTLA

compitz=> update j set jnombre='PROY055' where jnum='P004';

UPDATE 0

compitz=> rollback;

ROLLBACK

USUARIO1
compitz=> commit;

COMMIT

RESULTADOS OBTENIDOS
TRANSACCIÓN 1: El usuario2 comienza realizando operaciones de consulta,
posteriormente el usuario1 realiza una inserción para después abrir un begin
donde insertará más datos, consultará para finalizar la transacción con el commit.
El usuario2 consulta proveedores.

TRANSACCIÓN 2: Ambos usuarios inician las transacciones con el begin,


posteriormente el usuario1 realiza una actualización para que después el usuario2
realice una consulta y actualización. El usuario1 realiza otra consulta e inserción,
mientras que después el usuario intentaría realizar una consulta, pero no se podría
debido a que este a entrado a espera. El usuario1 finaliza con el commit y ahora si
el usuario1, puede realizar la consulta para después cerrar con el commit.
TRANSACCIÓN 3: Ambos usuarios inician las transacciones con el begin,
posteriormente el usuario1 inicia un update en el cual modifica el peso de la parte
P3. Después, el usuario2 realiza también un update en el cual modifica el nombre
de la parte TORNILLO a PIJA, pero en nuestro caso como anteriormente ya lo
habíamos realizado, cambiamos PIJA a PIJO. Posteriormente realizo una consulta
para ambos usuarios y finalizamos con un commit.

TRANSACCIÓN 4: Ambos usuarios inician las transacciones con el begin


work. Ambos usuarios inician con un update, el usuario1 actualiza el cuarto y
tercer registro y el usuario2 actualiza el tercer registro de la tabla, posteriormente
el usuario2 realiza una operación de consulta y update para retroceder con un
rollback. El usuario1 finaliza la transacción con un commit.

Вам также может понравиться