RAISEERROR
e ROLLBACK
são usados na sintaxe TSQL (Microsoft SQL Server). No caso do MySQL, usamos
SIGNAL .. SET MESSAGE_TEXT ..
para lançar uma exceção dentro do Trigger:BEGIN
IF (DATEDIFF(CURRENT_DATE(),NEW.birth_date) < 6570) THEN
-- Throw Exception
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Age is less than 18 years!';
END IF; -- A semicolon (delimiter) is missing here
END
Para sinalizar um valor SQLSTATE genérico, use '45000', que significa “exceção definida pelo usuário não tratada”.
Os valores de erro que são acessíveis após a execução do SIGNAL são o valor SQLSTATE gerado pela instrução SIGNAL e os itens MESSAGE_TEXT e MYSQL_ERRNO.