Tienes que validar las cosas en la aplicación, sino, ¿qué sentido tiene enviarle a la base información que no podrá almacenar?
Uno de los tips centrales de todo método de optimización de bases de datos es recordarles a los programadores de las aplicaciones que la base de datos no tiene que hacer TODO el trabajo. Su función central es almacenar datos y responder consultas. Las validaciones de datos son asunto de las aplicaciones; en todo caso, antes de hacer una inserción deberías hacer una consulta de valiudación del tipo:
Código:
SELECT IF(COUNT(*) IS NULL, 0, COUNT(*))
FROM belongs_to
WHERE id_user=NEW.id_user
AND id_module=NEW.id_module
AND id_ir=NEW.id_ir
AND date_finsih=null) > 0;
esto te devolvería un valor cero (0) o mayor a cero y si te da cero mandás el INSERT,.