Tenho um MariaDB 10.6 Server em um Rhel linux e quero criar um gatilho para uma tabela. Este é meu código:
DELIMITER //
CREATE TRIGGER before_salary_update
BEFORE UPDATE ON Employee
FOR EACH ROW
BEGIN
DECLARE salary_change DECIMAL(10, 2);
-- Calculate the percentage change in salary
SET salary_change = (NEW.salary - OLD.salary) / OLD.salary * 100;
-- Check if the change is within the 10% threshold
IF salary_change > 10 OR salary_change < -10 THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Error: Salary change exceeds 10% limit.';
END IF;
END //
DELIMITER ;
Quando executo meu código com o delimitador, meu terminal congela e tenho que interrompê-lo com ctrl+c. Quando executo sem o delimitador, recebo este erro:
ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1
Também tentei copiar isso para um arquivo sql e executá-lo do SO. Mas tenho o mesmo problema.
Verifique qual é o delimitador atual usado no terminal usando
\s
De acordo com seu código, funciona bem