Я думаю, вам просто нужно заменить
SELECT duration FROM membership_type WHERE
membership_type_id = NEW.member_type;
с
SET duration = SELECT duration FROM membership_type WHERE membership_type_id = NEW.member_type LIMIT 1;
Простой SELECT не делал ничего, чтобы назначить вашу локальную переменную, но действительно был в основном попыткой вернуть набор результатов из вашего триггера, как и предполагалось в ошибке.