drop table if exists t;
drop table if exists events;
create table t(order_id int, status varchar(1));
create table events(order_id int, time_stamp timestamp,status varchar(1));
drop trigger if exists t;
delimiter //
CREATE TRIGGER t after update ON `t`
FOR EACH ROW
begin
IF NEW.status <> OLD.status THEN
INSERT INTO `events`
SET events.status = NEW.status,
events.order_id = NEW.order_id,
events.time_stamp = CURRENT_TIMESTAMP;
END IF ;
end //
delimiter ;
insert into t values(1,1);
insert into events values(1,now(),1);
update t set status = 2 where order_id = 1;
select * from t;
select * from events;
MariaDB [sandbox]> select * from t;
+----------+--------+
| order_id | status |
+----------+--------+
| 1 | 2 |
+----------+--------+
1 row in set (0.00 sec)
MariaDB [sandbox]> select * from events;
+----------+---------------------+--------+
| order_id | time_stamp | status |
+----------+---------------------+--------+
| 1 | 2018-08-06 10:16:35 | 1 |
| 1 | 2018-08-06 10:16:35 | 2 |
+----------+---------------------+--------+
2 rows in set (0.00 sec)
, INSERTafterUPDATE;afterCURRENT_TIMESTAMPto terminate your statement properly.FOR EACH ROWyou need abeginkey word and afterend if;you Need anend;//