It's nice to see that MySQL 5 now supports triggers.
The only thing i'm missing is exception/error handling
For example you have a members table and when a member gets deleted then you want to clean up other tables as well.
Code:
DROP TRIGGER IF EXISTS del_member;
CREATE TRIGGER del_member BEFORE DELETE ON members
FOR EACH ROW BEGIN
DELETE FROM groups_user WHERE member_id = OLD.member_id;
DELETE FROM members_details WHERE member_id = OLD.member_id;
DELETE FROM members_stats WHERE member_id = OLD.member_id;
END;
But now i want to protect my own account for getting deleted.
Code:
DROP TRIGGER IF EXISTS del_member;
CREATE TRIGGER del_member BEFORE DELETE ON members
FOR EACH ROW BEGIN
IF (OLD.member_id = 1) THEN
EXCEPTION "not allowed to delete djmaze";
DELETE FROM groups_user WHERE member_id = OLD.member_id;
DELETE FROM members_details WHERE member_id = OLD.member_id;
DELETE FROM members_stats WHERE member_id = OLD.member_id;
END;
MySQL still doesn't support this.
Someone already found a workaround, or should i just run a query that crashes
Code:
DROP TRIGGER IF EXISTS del_member;
CREATE TRIGGER del_member BEFORE DELETE ON members
FOR EACH ROW BEGIN
IF (OLD.member_id = 1) THEN
INSERT INTO members VALUES (NULL);
..........
END;