https://pastebin.com/yneuuCkD
Leider bekomme ich es nicht hin Reihen aus Tabellen nach dem INSERT zu löschen. Im Pastebin ist ein funktionierendes Beispiel für DB2 und ich würde mich freuen, wenn Ihr mir helfen würdet es auch in MYSQL umzusetzen.
Code:
CREATE TABLE Follows (
follower VARCHAR(20) NOT NULL,
followed VARCHAR(20) NOT NULL,
PRIMARY KEY (follower, followed),
FOREIGN KEY (follower) REFERENCES User(username) ON DELETE CASCADE,
FOREIGN KEY (followed) REFERENCES User(username) ON DELETE CASCADE
);
CREATE TABLE Blocks (
blocker VARCHAR(20) NOT NULL,
blocked VARCHAR(20) NOT NULL,
PRIMARY KEY (blocker, blocked),
FOREIGN KEY (blocker) REFERENCES User(username) ON DELETE CASCADE,
FOREIGN KEY (blocked) REFERENCES User(username) ON DELETE CASCADE
);
-- Trigger zum löschen der Freundschaft
CREATE TRIGGER FreundschaftEnde
AFTER INSERT ON blocks
FOR EACH ROW
BEGIN
DELETE FROM Follows
-- Hier sollen nun alle Reihen gelöscht werden, welche für eine Freundschaft stehen.
-- Wie im funktionierenden Beispiel unten. Mein Problem, wie spreche ich nun die neu.blocker und f.follower bzw. f.followed an?
-- Ich muss einmal die Richtung follower followed löschen und andersrum.
END;
-- In DB2 wie folgt gelöst
CREATE TRIGGER FreundschaftEnde
AFTER INSERT ON blocks
REFERENCING NEW AS neu
FOR EACH ROW MODE DB2SQL
DELETE FROM Follows f
WHERE (neu.blocker = f.follower AND neu.blocked = f.followed)
OR (neu.blocked= f.follower AND neu.blocker = f.followed);