Also ich soll eine rekursive Select Anfrage schreiben, welche mir ausgibt ob eine Tabelle von "modellierten" Transactionen Serialisierbar ist.
Meines Wissens nach sind eine Anzahl an Transactionen Serialisierbar, wenn keine "Kollision" auftritt.
Ich habe hier das Create Table und eine Anfrage ob es Kollisionen gibt:
Meines Wissens nach sind eine Anzahl an Transactionen Serialisierbar, wenn keine "Kollision" auftritt.
Ich habe hier das Create Table und eine Anfrage ob es Kollisionen gibt:
SQL:
DROP TABLE IF EXISTS transactions;
-- Aufgabe 1a)
CREATE TABLE transactions (
zeitstempel NUMERIC PRIMARY KEY,
transactions_id NUMERIC(2),
objekt VARCHAR(1),
zugriffsart VARCHAR(5) CHECK(zugriffsart = 'read' or zugriffsart = 'write')
);
INSERT INTO transactions VALUES
(1, 1, 'A', 'read'),
(2, 2, 'B', 'read'),
(3, 2, 'B', 'write'),
(4, 3, 'A', 'read'),
(5, 3, 'C', 'write'),
(6, 2, 'C', 'read'),
(7, 1, 'B', 'read'),
(8, 3, 'D', 'write');
-- Aufgabe 1b)
SELECT
concat('T', t1.transactions_id, '.', t1.zugriffsart, '(', t1.objekt, ')') as Edge1,
concat('T', t2.transactions_id, '.', t2.zugriffsart, '(', t2.objekt, ')') as Edge2
FROM
transactions t1,
transactions t2
WHERE
t1.zeitstempel < t2.zeitstempel and
t1.objekt = t2.objekt and
t1.zugriffsart = 'write' and
t2.zugriffsart = 'read' and
t1.transactions_id <> t2.transactions_id
-- Aufgabe 1c)
-- Aufgabe 1d)