我有两个带有字段的表类别。
id parent_id name enabled
---------------------------
1 0 abc 1
2 1 mnc 1
另一张牌brand_master
id category_id name admin_status
---------------------------
1 1 pqr 1
2 2 xyz 1
我需要在“已启用”字段更新类别的基础上更新品牌表“admin_status”字段。
我有以下触发器。
CREATE TRIGGER `category_update` AFTER UPDATE ON `categories`
FOR EACH ROW BEGIN
DECLARE brand_finished INTEGER DEFAULT 0;
DECLARE brand_master_finished INTEGER DEFAULT 0;
DECLARE v_finished INTEGER DEFAULT 0;
DECLARE selected_id INT;
/**brand record updateed start**/
BEGIN
DECLARE brand_master_cursor CURSOR FOR
SELECT brand_master.id FROM `brand_master`
INNER JOIN categories c ON c.id=brand_master.category_id WHERE c.parent_id=old.id;
DECLARE CONTINUE HANDLER
FOR NOT FOUND SET brand_master_finished = 1;
OPEN brand_master_cursor;
get_email: LOOP
FETCH brand_master_cursor INTO selected_id;
IF brand_master_finished = 1 THEN
LEAVE get_email;
END IF;
UPDATE brand_master SET admin_status=new.enabled WHERE `category_id` = old.id;
UPDATE brand_master SET admin_status=new.enabled WHERE brand_master.id = selected_id;
END LOOP get_email;
CLOSE brand_master_cursor;
END;
/** end**/
END
我尝试使用两个光标进行父类别的品牌更新,然后使用子类别品牌更新。但它只更新父类别的品牌。 所以我创建了上面一个光标,将两个更新查询组合成单个。 但在上面,当父类别被禁用/启用时,它仅更新父类别品牌。如果我禁用/启用子类别,则它不会仅更新子类别。
离。如果我更新类别ID“1”enabled = 0,则更新两个品牌admin_status = 0。 但如果我更新类别ID“2”启用= 0,则不会更新任何内容。
请帮忙。如何在不同条件的单个光标中两次更新同一个表?