diff --git a/core/modules/taxonomy/src/Entity/Term.php b/core/modules/taxonomy/src/Entity/Term.php
index 7ca9dd7..976e6d4 100644
--- a/core/modules/taxonomy/src/Entity/Term.php
+++ b/core/modules/taxonomy/src/Entity/Term.php
@@ -79,6 +79,7 @@ public static function postDelete(EntityStorageInterface $storage, array $entiti
     // Delete term hierarchy information after looking up orphans but before
     // deleting them so that their children/parent information is consistent.
     $storage->deleteTermHierarchy(array_keys($entities));
+    $storage->deleteTermHierarchyByParent(array_keys($entities));
 
     if (!empty($orphans)) {
       entity_delete_multiple('taxonomy_term', $orphans);
diff --git a/core/modules/taxonomy/src/TermStorage.php b/core/modules/taxonomy/src/TermStorage.php
index 60b2330..836da9e 100644
--- a/core/modules/taxonomy/src/TermStorage.php
+++ b/core/modules/taxonomy/src/TermStorage.php
@@ -106,6 +106,15 @@ public function deleteTermHierarchy($tids) {
   }
 
   /**
+   *{@inheritdoc}
+   */
+  public function deleteTermHierarchyByParent($pids) {
+    $this->database->delete('taxonomy_term_hierarchy')
+      ->condition('parent', $pids, 'IN')
+      ->execute();
+  }
+
+  /**
    * {@inheritdoc}
    */
   public function updateTermHierarchy(EntityInterface $term) {
diff --git a/core/modules/taxonomy/src/TermStorageInterface.php b/core/modules/taxonomy/src/TermStorageInterface.php
index f60d7a2..9786f17 100644
--- a/core/modules/taxonomy/src/TermStorageInterface.php
+++ b/core/modules/taxonomy/src/TermStorageInterface.php
@@ -16,7 +16,7 @@
 interface TermStorageInterface extends EntityStorageInterface {
 
   /**
-   * Removed reference to terms from term_hierarchy.
+   * Removes reference to terms from term_hierarchy.
    *
    * @param array $tids
    *   Array of terms that need to be removed from hierarchy.
@@ -24,6 +24,14 @@
   public function deleteTermHierarchy($tids);
 
   /**
+   * Removes reference to terms from term_hierarchy parent.
+   *
+   * @param array $pids
+   *  Array of parent terms that need to be removed from hierarchy.
+   */
+  public function deleteTermHierarchyByParent($pids);
+
+  /**
    * Updates terms hierarchy information with the hierarchy trail of it.
    *
    * @param \Drupal\Core\Entity\EntityInterface $term
diff --git a/core/modules/taxonomy/src/Tests/TermTest.php b/core/modules/taxonomy/src/Tests/TermTest.php
index eaa0617..1001c6a 100644
--- a/core/modules/taxonomy/src/Tests/TermTest.php
+++ b/core/modules/taxonomy/src/Tests/TermTest.php
@@ -98,6 +98,16 @@ function testTaxonomyTermHierarchy() {
     $term2->save();
     $parents = taxonomy_term_load_parents($term2->id());
     $this->assertTrue(isset($parents[$term1->id()]) && isset($parents[$term3->id()]), 'Both parents found successfully.');
+
+    // Delete term 3 from the term edit page.
+    $this->drupalGet('taxonomy/term/' . $term3->id() . '/edit');
+    $this->clickLink(t('Delete'));
+    $this->drupalPostForm(NULL, NULL, t('Delete'));
+
+    // Check the hierarchy after deleting one parent of multiple parents.
+    \Drupal::entityManager()->getStorage('taxonomy_term')->resetCache();
+    $parents = taxonomy_term_load_parents($term2->id());
+    $this->assertTrue(count($parents) == 1, 'Term has one parent.');
   }
 
   /**
