How Not To Update Existing Taxonomy Terms At Migration
If found the solution, if the term exists return false from prepareRow($row) and the term won't be updated or migrated again. like this:

public function prepareRow($row) {
  if (parent::prepareRow($row) === FALSE) {
    return FALSE;
  }
  $term_name = $row-&gt;name;
  $query_checking_if_term_exist = db_select('taxonomy_term_data', 'ttd')
    -&gt;condition('ttd.name', $term_name)
    -&gt;condition('ttd.vid', '2')
    -&gt;fields('ttd', array('name'))
    -&gt;execute()-&gt;fetchAll();
  if(!empty($query_checking_if_term_exist)) {
    return FALSE;
  }


}