Tietokantojen perusteet kevät 2022

Tehtävä 4: Transaktioiden toiminta

Jokaisessa seuraavassa testissä lähtökohtana on SQLitessä taulu, joka on luotu seuraavasti:
CREATE TABLE Testi (x INTEGER);
INSERT INTO Testi (x) VALUES (1);
Testissä kuvataan kahdessa transaktiossa tehtävät komennot järjestyksessä. Vasemmalla ovat 1. transaktion komennot ja oikealla 2. transaktion komennot. Testaa komentoja avaamalla kaksi SQLite-tulkkia samaan tietokantatiedostoon.

Tehtäväsi on ilmoittaa, minkä tuloksen SELECT-kyselyt antavat sekä onnistuvatko transaktiot. Transaktio onnistuu, jos kaikki siinä olevat komennot suoritetaan onnistuneesti (eikä tule viestiä Error: database is locked).

Tehtävä muodostuu viidestä testistä. Saat testistä 2 pistettä, jos tulokset ovat oikein ja olet perustellut tulokset. Tehtävästä voi saada yhteensä 10 pistettä.

Testi 1

BEGIN;
SELECT x FROM Testi;
                                   BEGIN;
                                   UPDATE Testi SET x=2;
                                   SELECT x FROM Testi;
                                   COMMIT;
COMMIT;
Minkä tuloksen 1. transaktion SELECT-kysely antaa?

Minkä tuloksen 2. transaktion SELECT-kysely antaa?

Onnistuuko 1. transaktio?

Onnistuuko 2. transaktio?

Miten perustelet yllä olevat tulokset?

Testi 2

BEGIN;
SELECT x FROM Testi;
UPDATE Testi SET x=2;
                                   BEGIN;
                                   SELECT x FROM Testi;
                                   COMMIT;
COMMIT;
Minkä tuloksen 1. transaktion SELECT-kysely antaa?

Minkä tuloksen 2. transaktion SELECT-kysely antaa?

Onnistuuko 1. transaktio?

Onnistuuko 2. transaktio?

Miten perustelet yllä olevat tulokset?

Testi 3

BEGIN;
UPDATE Testi SET x=2;
                                   BEGIN;
                                   UPDATE Testi SET x=3;
                                   SELECT x FROM Testi;
                                   COMMIT;
SELECT x FROM Testi;
COMMIT;
Minkä tuloksen 1. transaktion SELECT-kysely antaa?

Minkä tuloksen 2. transaktion SELECT-kysely antaa?

Onnistuuko 1. transaktio?

Onnistuuko 2. transaktio?

Miten perustelet yllä olevat tulokset?

Testi 4

BEGIN;
UPDATE Testi SET x=2;
                                   BEGIN;
                                   UPDATE Testi SET x=2;
                                   SELECT x FROM Testi;
                                   COMMIT;
SELECT x FROM Testi;
COMMIT;
Minkä tuloksen 1. transaktion SELECT-kysely antaa?

Minkä tuloksen 2. transaktion SELECT-kysely antaa?

Onnistuuko 1. transaktio?

Onnistuuko 2. transaktio?

Miten perustelet yllä olevat tulokset?

Testi 5

BEGIN;
SELECT x FROM Testi;
                                   BEGIN;
                                   SELECT x FROM Testi;
                                   UPDATE Testi SET x=2;
                                   COMMIT;
UPDATE Testi SET x=3;
COMMIT;
Minkä tuloksen 1. transaktion SELECT-kysely antaa?

Minkä tuloksen 2. transaktion SELECT-kysely antaa?

Onnistuuko 1. transaktio?

Onnistuuko 2. transaktio?

Miten perustelet yllä olevat tulokset?

The deadline for this task has passed but you can still check your answers


Return to task list