diff --git a/typo3/sysext/core/Classes/DataHandling/SlugHelper.php b/typo3/sysext/core/Classes/DataHandling/SlugHelper.php
index 6d13acb511c648054645bb1faa57b940288871d4..77aee4f2a7f26d87487783ee23885d92641e6126 100644
--- a/typo3/sysext/core/Classes/DataHandling/SlugHelper.php
+++ b/typo3/sysext/core/Classes/DataHandling/SlugHelper.php
@@ -335,10 +335,12 @@ class SlugHelper
      */
     public function isUniqueInTable(string $slug, RecordState $state): bool
     {
+        $recordId = $state->getSubject()->getIdentifier();
         $languageId = $state->getContext()->getLanguageId();
 
         $queryBuilder = $this->createPreparedQueryBuilder();
         $this->applySlugConstraint($queryBuilder, $slug);
+        $this->applyRecordConstraint($queryBuilder, $recordId);
         $this->applyLanguageConstraint($queryBuilder, $languageId);
         $this->applyWorkspaceConstraint($queryBuilder, $state);
         $statement = $queryBuilder->execute();
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/DataHandler/DataSet/TestSlugUniqueNewRecordResult.csv b/typo3/sysext/core/Tests/Functional/DataHandling/DataHandler/DataSet/TestSlugUniqueNewRecordResult.csv
new file mode 100644
index 0000000000000000000000000000000000000000..0ee4a65d1b7440e92d7c98eeee54f1ae4f00a54a
--- /dev/null
+++ b/typo3/sysext/core/Tests/Functional/DataHandling/DataHandler/DataSet/TestSlugUniqueNewRecordResult.csv
@@ -0,0 +1,6 @@
+"pages",,,,
+,"uid","pid","title","slug"
+,1,0,"root","/"
+,2,1,"Page One","/page-one"
+,3,1,"Page Two","/page-two"
+,4,1,"Page Two","/page-two-1"
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/DataHandler/DataSet/TestSlugUniqueWithDeduplicatedSlugBase.csv b/typo3/sysext/core/Tests/Functional/DataHandling/DataHandler/DataSet/TestSlugUniqueWithDeduplicatedSlugBase.csv
new file mode 100644
index 0000000000000000000000000000000000000000..090cffb65d59c309c8914b9902e3aa09545d0581
--- /dev/null
+++ b/typo3/sysext/core/Tests/Functional/DataHandling/DataHandler/DataSet/TestSlugUniqueWithDeduplicatedSlugBase.csv
@@ -0,0 +1,5 @@
+"pages",,,,
+,"uid","pid","title","slug"
+,1,0,"root","/"
+,2,1,"Page One","/page-one"
+,3,1,"Page One","/page-one-1"
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/DataHandler/SlugUniqueTest.php b/typo3/sysext/core/Tests/Functional/DataHandling/DataHandler/SlugUniqueTest.php
index fbecb711aa829ecfca4b4ba20e86b04eb53917d9..28401649f2c389d47c3f765a5c9c6e9295a49c5b 100644
--- a/typo3/sysext/core/Tests/Functional/DataHandling/DataHandler/SlugUniqueTest.php
+++ b/typo3/sysext/core/Tests/Functional/DataHandling/DataHandler/SlugUniqueTest.php
@@ -30,7 +30,6 @@ class SlugUniqueTest extends AbstractDataHandlerActionTestCase
     {
         parent::setUp();
         $this->setUpFrontendSite(1);
-        $this->importCSVDataSet(__DIR__ . '/DataSet/TestSlugUniqueBase.csv');
     }
 
     /**
@@ -51,8 +50,9 @@ class SlugUniqueTest extends AbstractDataHandlerActionTestCase
      * @test
      * @param string $uniqueSetting
      */
-    public function differentUniqueEvalSettingsDeDuplicateSlug(string $uniqueSetting)
+    public function differentUniqueEvalSettingsDeDuplicateSlug(string $uniqueSetting): void
     {
+        $this->importCSVDataSet(__DIR__ . '/DataSet/TestSlugUniqueBase.csv');
         $GLOBALS['TCA']['pages']['columns']['slug']['config']['eval'] = $uniqueSetting;
         $dataHandler = GeneralUtility::makeInstance(DataHandler::class);
         $dataHandler->enableLogging = false;
@@ -68,7 +68,60 @@ class SlugUniqueTest extends AbstractDataHandlerActionTestCase
             []
         );
         $dataHandler->process_datamap();
+        $this->assertCSVDataSet('typo3/sysext/core/Tests/Functional/DataHandling/DataHandler/DataSet/TestSlugUniqueResult.csv');
+    }
+
+    /**
+     * @dataProvider getEvalSettingDataProvider
+     * @test
+     * @param string $uniqueSetting
+     */
+    public function currentRecordIsExcludedWhenDeDuplicateSlug(string $uniqueSetting): void
+    {
+        $this->importCSVDataSet(__DIR__ . '/DataSet/TestSlugUniqueWithDeduplicatedSlugBase.csv');
+        $GLOBALS['TCA']['pages']['columns']['slug']['config']['eval'] = $uniqueSetting;
+        $dataHandler = GeneralUtility::makeInstance(DataHandler::class);
+        $dataHandler->enableLogging = false;
+        $dataHandler->start(
+            [
+                'pages' => [
+                    3 => [
+                        'slug' => 'page-one-1',
+                    ],
+                ],
+            ],
+            []
+        );
+        $dataHandler->process_datamap();
 
         $this->assertCSVDataSet('typo3/sysext/core/Tests/Functional/DataHandling/DataHandler/DataSet/TestSlugUniqueResult.csv');
     }
+
+    /**
+     * @dataProvider getEvalSettingDataProvider
+     * @test
+     * @param string $uniqueSetting
+     */
+    public function differentUniqueEvalSettingsDeDuplicateSlugWhenCreatingNewRecords(string $uniqueSetting): void
+    {
+        $this->importCSVDataSet(__DIR__ . '/DataSet/TestSlugUniqueBase.csv');
+        $GLOBALS['TCA']['pages']['columns']['slug']['config']['eval'] = $uniqueSetting;
+        $dataHandler = GeneralUtility::makeInstance(DataHandler::class);
+        $dataHandler->enableLogging = false;
+        $dataHandler->start(
+            [
+                'pages' => [
+                    'NEW-1' => [
+                        'pid' => 1,
+                        'title' => 'Page Two',
+                        'slug' => '',
+                    ],
+                ],
+            ],
+            []
+        );
+        $dataHandler->process_datamap();
+
+        $this->assertCSVDataSet('typo3/sysext/core/Tests/Functional/DataHandling/DataHandler/DataSet/TestSlugUniqueNewRecordResult.csv');
+    }
 }