Working through the excellent rails tutorial by Michael Hartl, somewhere around the end chapter 9 I came across some unusual behavior of (what I suspect) Ruby/Rails. My data, which is committed to a MySQL database, kept disappearing.
Whenever a change was made to any of the spec or controller files, all my users would be gone 🙁
To get a grip on who the culprit is, I went off to create some triggers who would log what happened and when:
CREATE TABLE logger
( logger_id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY
, logger_event VARCHAR(50)
, logger_table VARCHAR(50)
, logger_instring VARCHAR(100)
, logger_outstring VARCHAR(100)
, creation_date DATETIME
, last_update_date DATETIME) ENGINE=MyISAM;
DELIMITER $$
CREATE TRIGGER trg_users_insert
AFTER INSERT ON users
FOR EACH ROW begin
INSERT INTO logger VALUES ( null
,'insert'
,'users'
, new.email
, null
, new.created_at
, null );
END$$
CREATE TRIGGER trg_users_update
AFTER update ON users
FOR EACH ROW begin
INSERT INTO logger VALUES ( null
,'update'
,'users'
, old.email
, new.email
, old.updated_at
, new.updated_at );
END$$
CREATE TRIGGER trg_users_delete
before delete ON users
FOR EACH ROW begin
INSERT INTO logger VALUES ( null
,'delete'
,'users'
, old.email
, null
, null
, current_timestamp );
END$$
Not the most sophisticated piece of code ever, but let’s see if it does the trick…