MySQL trigger/check on INSERT based on multiple factors (location, date and time)
With some help, the solution was extremely simple... 
The trigger needs to validate the staff id as well. Therefore, the final trigger would look like: 

begin
  if exists (select * from shift
             where shift_start &lt;= new.shift_end
             and shift_end &gt;= new.shift_start
             and staff_id = new.staff_id) then
    signal sqlstate '45000' SET MESSAGE_TEXT = 'Shifts are overlapping';
  end if;
end