Quando você escreve um gatilho, você deve especificar um delimitador para que o mysql execute explicitamente seu bloco de gatilho dentro do delimitador especificado. Se o delimitador não for fornecido, quando encontrar qualquer
;
dentro da instrução de gatilho, ele tentará executar o comando até esse bloco e, portanto, você poderá obter erros. Se você estiver usando alguma ferramenta de interface do usuário para gerar o gatilho, verifique se há uma opção para definir o delimitador como no PHPMyadmin.
Na CLI o trigger precisa ter um delimitador e fica
delimiter //
create trigger Q_DUR_CALC before insert on TASK_Q_SWH
for each row
begin
declare LCL_Q_DUR INTEGER;
set LCL_Q_DUR = new.TQ_TASK_DUR - new.TQ_TASK_RUN_DUR;
SET new.TQ_Q_DUR = LCL_Q_DUR;
end;//
delimiter ;