Diferència entre revisions de la pàgina «ASIX/M02/UF2/A06/E0»

De Lordwektabyte Wiki
Salta a la navegació Salta a la cerca
(Es crea la pàgina amb «==Transacció== ===Insertar un registre a la taula sp de peces, (el valors dels camp s i p han d'estar a les seves taules)=== {| class="wikitable" !Sessió 1 !Sessió...».)
 
m (Guillem ha mogut M02/UF2/A06/E0 a ASIX/M02/UF2/A06/E0 sense deixar una redirecció: Crear subnivell ASIX)
 
(Hi ha 2 revisions intermèdies del mateix usuari que no es mostren)
Línia 1: Línia 1:
 +
[[Category:M02]]
 +
{{Titol|Exercicis de transaccions i gestionant la concurrència.}}
 
==Transacció==
 
==Transacció==
 
===Insertar un registre a la taula sp de peces, (el valors dels camp s i p han d'estar a les seves taules)===
 
===Insertar un registre a la taula sp de peces, (el valors dels camp s i p han d'estar a les seves taules)===

Revisió de 11:19, 15 abr 2020


Transacció

Insertar un registre a la taula sp de peces, (el valors dels camp s i p han d'estar a les seves taules)

Sessió 1 Sessió 2
MariaDB [peces]> begin;
Query OK, 0 rows affected (0.00 sec)
MariaDB [peces]> select * from sp;
+-----+-----+------+
| s   | p   | cant |
+-----+-----+------+
| s1  | p1  |  100 |
| s1  | p2  |  100 |
(------------------)
| s9  | p3  |  430 |
| s9  | p4  |  300 |
+-----+-----+------+
90 rows in set (0.01 sec)
MariaDB [peces]> insert into sp values("s9","p5",7000);
Query OK, 1 row affected (0.00 sec)
MariaDB [peces]> commit;
Query OK, 0 rows affected (0.04 sec)
MariaDB [peces]> select * from sp;
+-----+-----+------+
| s   | p   | cant |
+-----+-----+------+
| s1  | p1  |  100 |
| s1  | p2  |  100 |
(------------------)
| s9  | p3  |  430 |
| s9  | p4  |  300 |
| s9  | p5  | 7000 |
+-----+-----+------+
91 rows in set (0.00 sec)

Insertar un registre a la taula sp de peces, (el valors dels camp s i p NO han d'estar a les seves taules)

Sessió 1 Sessió 2
MariaDB [peces]> select * from sp;
+-----+-----+------+
| s   | p   | cant |
+-----+-----+------+
| s1  | p1  |  100 |
| s1  | p2  |  100 |
(------------------)
| s9  | p4  |  300 |
| s9  | p5  | 7000 |
+-----+-----+------+
91 rows in set (0.00 sec)
MariaDB [peces]> begin;
Query OK, 0 rows affected (0.00 sec)
MariaDB [peces]> insert into sp values("s60","p70",10);
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`peces`.`sp`, CONSTRAINT `fk_s` FOREIGN KEY (`s`) REFERENCES `s` (`s`) ON UPDATE CASCADE)
MariaDB [peces]> rollback;
Query OK, 0 rows affected (0.00 sec)
MariaDB [peces]> select * from sp;
+-----+-----+------+
| s   | p   | cant |
+-----+-----+------+
| s1  | p1  |  100 |
| s1  | p2  |  100 |
(------------------)
| s9  | p4  |  300 |
| s9  | p5  | 7000 |
+-----+-----+------+
91 rows in set (0.00 sec)

Esborrar un registre de la taula sp i sortir abans de fer el commit

Sessió 1 Sessió 2
MariaDB [peces]> select * from sp;
+-----+-----+------+
| s   | p   | cant |
+-----+-----+------+
| s1  | p1  |  100 |
| s1  | p2  |  100 |
(------------------)
| s9  | p4  |  300 |
| s9  | p5  | 7000 |
+-----+-----+------+
91 rows in set (0.00 sec)
MariaDB [peces]> begin;
Query OK, 0 rows affected (0.00 sec)
MariaDB [peces]> delete from sp where s="s9" and p="p5";                        
Query OK, 1 row affected (0.01 sec)
MariaDB [peces]> exit                                                              
Bye
MariaDB [peces]> select * from sp;
+-----+-----+------+
| s   | p   | cant |
+-----+-----+------+
| s1  | p1  |  100 |
| s1  | p2  |  100 |
(------------------)
| s9  | p4  |  300 |
| s9  | p5  | 7000 |
+-----+-----+------+
91 rows in set (0.00 sec)

Esborrar un registre de la taula sp i fer un rollback

Sessió 1 Sessió 2
MariaDB [peces]> select * from sp;
+-----+-----+------+
| s   | p   | cant |
+-----+-----+------+
| s1  | p1  |  100 |
| s1  | p2  |  100 |
(------------------)
| s9  | p4  |  300 |
| s9  | p5  | 7000 |
+-----+-----+------+
91 rows in set (0.00 sec)
MariaDB [peces]> begin;
Query OK, 0 rows affected (0.00 sec)
MariaDB [peces]> delete from sp where s="s9" and p="p5";                        
Query OK, 1 row affected (0.01 sec)
MariaDB [peces]> rollback;
Query OK, 0 rows affected (0.00 sec)
MariaDB [peces]> select * from sp;
+-----+-----+------+
| s   | p   | cant |
+-----+-----+------+
| s1  | p1  |  100 |
| s1  | p2  |  100 |
(------------------)
| s9  | p4  |  300 |
| s9  | p5  | 7000 |
+-----+-----+------+
91 rows in set (0.00 sec)

Bloquejos

Comprobació de bloqueig de la taula s, no es pot fer un select

Sessió 1 Sessió 2
Instruccio SQL a la Sessio 1
Resultat SQL sessio 1
Instruccio SQL a la Sessio 1
Resultat SQL sessio 1
Instruccio SQL a la Sessio 2
Resultat SQL sessio 2

Comprobació de bloqueig de la taula s, no es pot fer un insert

Sessió 1 Sessió 2
Instruccio SQL a la Sessio 1
Resultat SQL sessio 1
Instruccio SQL a la Sessio 1
Resultat SQL sessio 1
Instruccio SQL a la Sessio 2
Resultat SQL sessio 2

Bloquejar només la modificació de la ciutat "Granollers" de la taula S (dins d'una transacció)

Sessió 1 Sessió 2
Instruccio SQL a la Sessio 1
Resultat SQL sessio 1
Instruccio SQL a la Sessio 1
Resultat SQL sessio 1
Instruccio SQL a la Sessio 2
Resultat SQL sessio 2