我有一个表名“sys\u parent”,如下所示
|-----|------|--------|
| id | name | status |
|-----|------|--------|
| 101 | bi | n |
另一张表格“sys\u child”如下所示
|-----|-----------|--------|--------|
| id | parent_id | name | status |
|-----|-----------|--------|--------|
| 1 | 101 | b | n |
| 2 | 101 | c | n |
| 3 | 101 | d | y |
你的孩子在哪里。 parent_id
是sys\u父级的外键。 id
问题是,如果我将sys\u child的每个状态都更新为'n',那么父sys\u parent。 status
将更新为“n”,反之亦然。我试过了
DELIMITER $$
CREATE TRIGGER new_trigger
AFTER UPDATE ON sys_child
FOR EACH ROW
BEGIN
SET @changetype = (SELECT COUNT(*) FROM sys_child GROUP BY `status`);
SET @statustype = (SELECT `status` FROM sys_child GROUP BY `status`);
IF @changetype < 2
THEN UPDATE sys_parent
SET `status`= @statustype;
END IF;
END$$
DELIMITER;
但它不起作用。如何使用mysql触发器来实现这一点??
1条答案
按热度按时间fv2wmkja1#
这个扳机会做你想做的事。在更新时,它会找出当前子级的父级有多少子级(
num_children
),然后找出其中有多少子级与当前子级具有相同的状态(this_status
). 如果这些值相同,则所有子级都具有相同的状态,父级将用该值更新。