CREATE DEFINER=`heureka_super`@`localhost` PROCEDURE `udp_1`(in_currentCategory INT, in_kvantita INT) SQL SECURITY INVOKER BEGIN DECLARE _parentCategory INT DEFAULT NULL; DECLARE itemDepth INT DEFAULT 1; DECLARE loopNum INT DEFAULT 0; CREATE TEMPORARY TABLE IF NOT EXISTS temp_1 (categoryId SMALLINT(5) UNSIGNED); DELETE FROM temp_1; loop1: LOOP SELECT parentId INTO _parentCategory FROM Categories WHERE categoryId = in_currentCategory LOCK IN SHARE MODE; INSERT INTO temp_1 (categoryId) VALUES (in_currentCategory); IF _parentCategory IS NULL THEN LEAVE loop1; ELSE SET in_currentCategory = _parentCategory; END IF; END LOOP loop1; UPDATE Categories JOIN temp_1 USING(categoryId) SET pocetProduktu = IF(pocetProduktu + in_kvantita < 0, 0, pocetProduktu + in_kvantita) ; DELETE FROM temp_1; END