De acordo com o padrão MySQL, a maneira correta de lidar com isso seria o comando SIGNAL para lançar um erro de volta ao cliente. como este é um gatilho BEFORE, um erro no gatilho impedirá o mysql de seguir em frente e inserir a linha.
No entanto, o mysql ainda não suporta SIGNAL, então temos que encontrar uma maneira de causar um erro arbitrário.
Uma maneira de fazer isso é chamar um procedimento inexistente, como demonstrado aqui .
Uma ideia melhor seria remover os direitos INSERT desta tabela e, em vez disso, usar um procedimento armazenado para manipular a inserção para você.