Пытается собрать некоторые данные по иерархии для отправки третьим лицам и направлено в this post.Сохраняемая процедура тайм-аута
После попытки настроить его на мой прецедент на SQL Fiddle, хранимая процедура сохраняет тайм-аут.
Итак, я попробовал его локально дважды (через PhpMyAdmin).
Когда я пытаюсь перезагрузить PMA в браузере после вызова хранимой процедуры, я просто получаю вечный счетчик «ожидания ответа» (более 10 или 20 минут).
Я предполагаю, что с моим кодом SP что-то не так ???
CREATE TABLE foo
(`id` int, `name` varchar(100), `parentId` int, `path` varchar(100))
//
INSERT INTO foo (`id`, `name`, `parentId`, `path`)
VALUES (1, 'discrete', 0, NULL),
(2, 'res', 1, NULL),
(3, 'smt', 2, NULL),
(4, 'cap', 1, NULL),
(5, 'ind', 1, NULL),
(6, 'smt', 4, NULL),
(7, 'tant', 6, NULL),
(8, 'cer', 6, NULL)
//
CREATE PROCEDURE updatePath()
BEGIN
DECLARE cnt, n int;
SELECT COUNT(*) INTO n FROM foo WHERE parentId = 0;
UPDATE foo a, foo b SET a.path = b.name WHERE b.parentId IS NULL AND a.parentId = b.id;
SELECT count(*) INTO cnt FROM foo WHERE path IS NULL;
while cnt > n do
UPDATE foo a, foo b SET a.path = concat(b.path, '|', b.id) WHERE b.path IS NOT NULL AND a.parentId = b.id;
SELECT count(*) INTO cnt FROM foo WHERE path IS NULL;
end while;
END//
EDIT
Ожидаемые результаты:
VALUES (1, 'discrete', 0, '1'),
(2, 'res', 1, '1|2'),
(3, 'smt', 2, '1|2|3'),
(4, 'cap', 1, '1|4'),
(5, 'ind', 1, '1|5'),
(6, 'smt', 4, '1|4|6'),
(7, 'tant', 6, '1|4|6|7'),
(8, 'cer', 6, '1|4|6|8');
Что касается вызова SP в SqlFiddle, я понимаю, что они должны быть вызваны из панели схемы. Если я ошибаюсь, сообщите нам. – mOrloff
И BTW, я открыт для совершенно разных подходов (например, временных таблиц или ???), если есть преимущества для этого. – mOrloff