Некоторое время я использовал хранимые процедуры и триггеры MSSQL; MySQL сводит меня с ума от того, как написать даже более простую процедуру.
Почему я получаю синтаксическую ошибку в этом так называемом триггере?
CREATE TRIGGER set_prio_default BEFORE INSERT ON categories
FOR EACH ROW
BEGIN
set @my_prio := 1;
SET new.prio := @my_prio;
END
На самом деле этот ТРИГГЕР является чрезмерным упрощением:
DELIMITER $$
DROP PROCEDURE IF EXISTS `slot08`.`test` $$
CREATE PROCEDURE `slot08`.`test` ()
BEGIN
select 1 + max(prio) from categories INTO @my_prio;
select @my_prio;
END $$
DELIMITER ;
Тем не менее я не понимаю, как использовать переменные в процедурах. Если я использую оператор DECLARE и имя переменной пропускает символ @, я получаю сообщение об ошибке от mysql, сообщающее мне «неизвестная системная переменная» - но во многих примерах, которые я видел, использовался этот синтаксис
Я имею в виду:
это не работает
CREATE TRIGGER set_prio_default BEFORE INSERT ON categories
FOR EACH ROW
BEGIN
declare my_prio integer default 1;
set my_prio := 1;
SET new.prio := my_prio;
END
Если я использую @, я получаю синтаксическую ошибку.
Есть подсказки?
Спасибо!