Tietokantojen perusteet syksy 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


Return to task list