Già che ci sono provo a chiedere un'ultima cosa.
ho quest'altro esercizio:
codice:
Data la tabella Conti(Id,Saldo), inizialmente vuota e le transazioni
T1
INSERT INTO Conti VALUES (1, 100);
INSERT INTO Conti VALUES (2, 100);
SELECT AVG(Saldo) FROM Conti;
T2
INSERT INTO Conti VALUES (3, 400);
SELECT AVG(Saldo) FROM Conti;
fornire i possibili valori ritornati da T2 (con livello di serializzabilit`a massimo).
Ora ho provato ad eseguirla con il programma consigliato (finalmente...) e mi da come risultato 100. Cioè mi da 100 se faccio così:
codice:
START TRANSACTION;
INSERT INTO Conti VALUES (1, 100);
INSERT INTO Conti VALUES (2, 100);
SELECT AVG(Saldo) FROM Conti;
COMMIT;
START TRANSACTION;
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
INSERT INTO Conti VALUES (3, 400);
SELECT AVG(Saldo) FROM Conti INTO media;
COMMIT;
E' giusto?
Questo è dovuto al fatto che il livello di isolamente è serializable quindi dovrei attendere che T1 rilasci la tabella per poter eseguire? Però è strano perchè i valori vengono inseriti tutti e tre nel database