-- before - insert, update, delete ์
-- after - insert, update, delete ํ
CREATE TABLE records (
record_id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
changes tinytext,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL
);
INSERT INTO movies SELECT * FROM archived_movies WHERE movie_id = 2;
-- INSERT
CREATE TRIGGER before_movie_insert
BEFORE INSERT
ON movies
FOR EACH ROW
INSERT INTO records (changes) VALUES (CONCAT('Will Insert', NEW.title));
CREATE TRIGGER after_movie_insert
AFTER INSERT
ON movies
FOR EACH ROW
INSERT INTO records (changes) VALUES (CONCAT( 'Insert completed: ', NEW.TITLE));
-- UPDATE
CREATE TRIGGER before_movie_update
BEFORE UPDATE
ON movies
FOR EACH ROW
INSERT INTO records (changes) VALUES (CONCAT('Will update title: ', OLD.title, ' -> ', NEW.title));
CREATE TRIGGER after_movie_update
AFTER UPDATE
ON movies
FOR EACH ROW
INSERT INTO records (changes) VALUES (CONCAT('update completed: ', OLD.title, ' -> ', NEW.title));
-- DELETE
CREATE TRIGGER before_movie_delete
BEFORE DELETE
ON movies
FOR EACH ROW
INSERT INTO records (changes) VALUE (CONCAT('Will delete: ', OLD.title));
CREATE TRIGGER after_movie_delete
AFTER DELETE
ON movies
FOR EACH ROW
INSERT INTO records (changes) VALUE (CONCAT('Bye : ', OLD.title));
#11.4 Overpowered Trigger
SHOW TRIGGERS;
DROP TRIGGER after_movie_update;
TRUNCATE TABLE records;
DROP TRIGGER after_movie_update;
DELIMITER $$
CREATE TRIGGER after_movie_update
AFTER UPDATE
ON movies
FOR EACH ROW
BEGIN
DECLARE changes TINYTEXT DEFAULT '';
IF NEW.title <> OLD.title THEN
SET changes = CONCAT('Title Changed', OLD.title, '->', NEW.title, '\n ');
END IF;
IF NEW.budget <> OLD.budget THEN
SET changes = CONCAT(changes, 'Budget changed ', OLD.budget, '->', NEW.budget);
END IF;
INSERT INTO records (changes) VALUES (changes);
END$$
DELIMITER ;