I have two tables:
table1
------
id, status
table2
------
id,items
status in table1 can be one of "Paid", "Pending", "Requested".
items in table2 contains comma separated id of table1.
ie.
table1
------
1 | Requested
2 | Requested
3 | Pending
table2
------
1 | 1,2
I wanted to update status of table1 from "Requested" to "Paid" whenever any item added into field items of table2.
Also I wanted to reset status to "Requested" if item is removed from table2 items field on update.
So created 3 triggers:
1) After INSERT:
CREATE TRIGGER `Update status` AFTER INSERT ON `table2`
FOR EACH ROW BEGIN
UPDATE table1
SET status = 'Paid'
WHERE id IN (NEW.items);
END
2) Before UPDATE:
CREATE TRIGGER `Reset on update`
BEFORE UPDATE ON `table2`
FOR EACH ROW BEGIN
UPDATE table1 SET status = 'Requested' WHERE
id IN (OLD.items)
END
3) After UPDATE:
CREATE TRIGGER `New status on update` AFTER UPDATE ON `table2`
FOR EACH ROW BEGIN
UPDATE table1 SET status = 'Paid' WHERE id IN (NEW.items);
END
The problem is triggers are updating only one row(1st of comma separated id) of table1 in of the above all triggers.
Am I missing something?