Я думаю, вам следует начать с этой статьи: https://www.mysqltutorial.org/getting-started-with-mysql-stored-procedures.aspx
Я не вижу BEGIN
, END
и CREATE PROCEDURE
в вашем запросе, так что я думаю, что вы есть здесь можно просто запустить как необработанный запрос, а не процедура.
Прежде чем создавать новую процедуру, вы должны определить, что эта процедура должна делать? Я прочитал статью, которую вы отправили, и похоже, что она была ответственна за добавление узлов.
Позволяет назвать это addNode
. Первый параметр должен быть parent
(это будет имя родительского узла - 'TELEVISION' в вашем примере. Имя файла должно быть вторым, как child
('GAME CONSOLES'). Оба типа должны иметь тот же тип, что и столбец name
в nested_category
table.
DELIMITER //
CREATE PROCEDURE addNode(
parent varchar(20),
child varchar(20)
)
BEGIN
-- << you will figure this out :) >>
-- SELECT [...] WHERE name = parent
-- UPDATE [...]
-- INSERT [...] VALUES(child, [...]
END //
DELIMITER ;
Теперь в вашем PHP вы можете запустить:
CALL addNode('TELEVISION', 'GAME CONSOLES');
Поскольку в процедуре у нас есть begin
и end
все, что происходит между ними, одно набор операторов, которые должны выполняться вместе, чтобы вам не нужно было блокировать таблицы. Подробнее о транзакциях и уровне изоляции.
PS: я не проверял этот запрос. Надеюсь, он в порядке.