diff --git a/src/Plugin/migrate/destination/Table.php b/src/Plugin/migrate/destination/Table.php
index f04d9f6..33627b1 100755
--- a/src/Plugin/migrate/destination/Table.php
+++ b/src/Plugin/migrate/destination/Table.php
@@ -110,9 +110,14 @@ class Table extends DestinationBase implements ContainerFactoryPluginInterface {
    * {@inheritdoc}
    */
   public function import(Row $row, array $old_destination_id_values = []) {
-    $id = $row->getSourceIdValues();
-    if (count($id) != count($this->idFields)) {
-      throw new MigrateSkipProcessException('All the id fields are required for a table migration.');
+    $ids = [];
+    foreach ($this->idFields as $field => $fieldInfo) {
+      if ($row->hasDestinationProperty($field)) {
+        $ids[$field] = $row->getDestinationProperty($field);
+      }
+      elseif (!$row->hasDestinationProperty($field) && empty($fieldInfo['auto_increment'])) {
+        throw new MigrateSkipProcessException('All the id fields are required for a table migration.');
+      }
     }
 
     $values = $row->getDestination();
@@ -121,12 +126,26 @@ class Table extends DestinationBase implements ContainerFactoryPluginInterface {
       $values = array_intersect_key($values, $this->fields);
     }
 
-    $status = $this->dbConnection->merge($this->tableName)
-      ->key($id)
-      ->fields($values)
-      ->execute();
+    // Row contains empty id field with auto_increment enabled.
+    if (count($ids) < count($this->idFields)) {
+      $status = $id = $this->dbConnection->insert($this->tableName)
+        ->fields($values)
+        ->execute();
+      foreach ($this->idFields as $field => $fieldInfo) {
+        if (isset($fieldInfo['auto_increment']) && $fieldInfo['auto_increment'] === TRUE && !$row->hasDestinationProperty($field)) {
+          $row->setDestinationProperty($field, $id);
+          $ids[$field] = $id;
+        }
+      }
+    }
+    else {
+      $status = $this->dbConnection->merge($this->tableName)
+        ->key($ids)
+        ->fields($values)
+        ->execute();
+    }
 
-    return $status ? $id : NULL;
+    return $status ? $ids : NULL;
   }
 
   /**
