diff --git a/mmengine/registry/default_scope.py b/mmengine/registry/default_scope.py
index 6e7b32f6cfdb2944d34fbed58f687d58a83810d2..cc27f8ee3446cd39c140f2f09894e8701a974eea 100644
--- a/mmengine/registry/default_scope.py
+++ b/mmengine/registry/default_scope.py
@@ -86,6 +86,8 @@ class DefaultScope(ManagerMixin):
             yield
         else:
             tmp = copy.deepcopy(cls._instance_dict)
+            # To avoid create an instance with the same name.
+            time.sleep(1e-6)
             cls.get_instance(f'overwrite-{time.time()}', scope_name=scope_name)
             try:
                 yield
diff --git a/tests/test_registry/test_default_scope.py b/tests/test_registry/test_default_scope.py
index 3846b15adef13300e92c72713f551566633dc7d5..0798f4a2c75831dd67559f3df5614fd6431dba3d 100644
--- a/tests/test_registry/test_default_scope.py
+++ b/tests/test_registry/test_default_scope.py
@@ -33,3 +33,16 @@ class TestDefaultScope:
             ).scope_name == 'test_overwrite'
         assert DefaultScope.get_current_instance(
         ).scope_name == origin_scope.scope_name == 'origin_scope'
+
+        # Test overwrite default scope immediately.
+        # Test sequentially overwrite.
+        with DefaultScope.overwrite_default_scope(scope_name='test_overwrite'):
+            pass
+        with DefaultScope.overwrite_default_scope(scope_name='test_overwrite'):
+            pass
+
+        # Test nested overwrite.
+        with DefaultScope.overwrite_default_scope(scope_name='test_overwrite'):
+            with DefaultScope.overwrite_default_scope(
+                    scope_name='test_overwrite'):
+                pass