add batch remove batch split batch comment selection show hidden batches hide batch highlight batch
db<>fiddle
donate feedback about
By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
CREATE TABLE IF NOT EXISTS `user` (
`user_id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) NOT NULL,
`address` VARCHAR(255) NULL,
`city` VARCHAR(45) NULL,
`phone` VARCHAR(45) NULL,
PRIMARY KEY (`user_id`)
) ENGINE = InnoDB DEFAULT CHARSET=utf8;

INSERT INTO user (name,address,city,phone) VALUES
('aaa','address1','city1','011-2222222'),
('bbb','address2','city2','011-3333333'),
('ccc','address3','city3','011-4444444'),
('ddd','address4','city4','011-5555555'),
('eee','address5','city5','011-6666666'),
('fff','address6','city6','011-7777777');

CREATE TABLE IF NOT EXISTS `user_log` (
`log_id` INT NOT NULL AUTO_INCREMENT,
`user_id` INT NOT NULL,
`action` TEXT NOT NULL,
`old_data` TEXT NOT NULL,
`new_data` TEXT NOT NULL,
`changed_date` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`view` ENUM('yes', 'no') NULL DEFAULT 'no',
PRIMARY KEY (`log_id`)
) ENGINE = InnoDB DEFAULT CHARSET=utf8;

select * from user;
user_id name address city phone
1 aaa address1 city1 011-2222222
2 bbb address2 city2 011-3333333
3 ccc address3 city3 011-4444444
4 ddd address4 city4 011-5555555
5 eee address5 city5 011-6666666
6 fff address6 city6 011-7777777
CREATE TRIGGER `user_log`
AFTER UPDATE ON `user`
FOR EACH ROW
BEGIN

INSERT INTO user_log (user_id,action,old_data,new_data)
SELECT NEW.user_id,
CONCAT('Changed ', OLD.name, "'s ", columnname),
oldvalue,
newvalue
FROM ( SELECT 'name' columnname, OLD.name oldvalue, NEW.name newvalue
UNION ALL
SELECT 'address', OLD.address, NEW.address
UNION ALL
SELECT 'city', OLD.city, NEW.city
UNION ALL
SELECT 'phone', OLD.phone, NEW.phone
) data
WHERE NOT oldvalue <=> newvalue;

END
UPDATE user SET name = 'ggg', address = 'address7' WHERE user_id = 1;
UPDATE user SET phone = '123-4567890', address = 'address8' WHERE user_id = 5;
SELECT * FROM user;
user_id name address city phone
1 ggg address7 city1 011-2222222
2 bbb address2 city2 011-3333333
3 ccc address3 city3 011-4444444
4 ddd address4 city4 011-5555555
5 eee address8 city5 123-4567890
6 fff address6 city6 011-7777777
SELECT * FROM user_log;
log_id user_id action old_data new_data changed_date view
1 1 Changed aaa's name aaa ggg 2022-06-22 11:12:43 no
2 1 Changed aaa's address address1 address7 2022-06-22 11:12:43 no
4 5 Changed eee's address address5 address8 2022-06-22 11:12:43 no
5 5 Changed eee's phone 011-6666666 123-4567890 2022-06-22 11:12:43 no