PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   MySQLi/PDO/(MySQL) (http://www.selfphp.de/forum/forumdisplay.php?f=22)
-   -   Trigger - AFTER INSERT ON DELETE (http://www.selfphp.de/forum/showthread.php?t=26094)

JohannaZE 24.01.2018 01:09:22

Trigger - AFTER INSERT ON DELETE
 
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);



Alle Zeitangaben in WEZ +2. Es ist jetzt 15:09:48 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.