diff --git a/apps/user_ldap/lib/User/User.php b/apps/user_ldap/lib/User/User.php
index 4afc8032f73d3dafd9aeb06d86aa50ec80665dca..f4be19a7ad532f81495665c5d7e68a76c9cfb038 100644
--- a/apps/user_ldap/lib/User/User.php
+++ b/apps/user_ldap/lib/User/User.php
@@ -421,11 +421,13 @@ class User {
 		if($displayName2 !== '') {
 			$displayName .= ' (' . $displayName2 . ')';
 		}
-		$oldName = $this->config->getUserValue($this->uid, 'user_ldap', 'displayName', '');
-		if ($oldName !== $displayName) {
+		$oldName = $this->config->getUserValue($this->uid, 'user_ldap', 'displayName', null);
+		if ($oldName !== $displayName)  {
 			$this->store('displayName', $displayName);
 			$user = $this->userManager->get($this->getUsername());
-			if ($user instanceof \OC\User\User) {
+			if (!empty($oldName) && $user instanceof \OC\User\User) {
+				// if it was empty, it would be a new record, not a change emitting the trigger could
+				// potentially cause a UniqueConstraintViolationException, depending on some factors.
 				$user->triggerChange('displayName', $displayName);
 			}
 		}
diff --git a/apps/user_ldap/tests/User/UserTest.php b/apps/user_ldap/tests/User/UserTest.php
index 63c90c6ac7251cc2ad6bbf119829c8cc30a19a8e..6ff9defe47bcf54a248bb49253de0baa6a4de9a8 100644
--- a/apps/user_ldap/tests/User/UserTest.php
+++ b/apps/user_ldap/tests/User/UserTest.php
@@ -998,25 +998,35 @@ class UserTest extends \Test\TestCase {
 
 	public function displayNameProvider() {
 		return [
-			['Roland Deschain', '', 'Roland Deschain'],
-			['Roland Deschain', null, 'Roland Deschain'],
-			['Roland Deschain', 'gunslinger@darktower.com', 'Roland Deschain (gunslinger@darktower.com)'],
+			['Roland Deschain', '', 'Roland Deschain', false],
+			['Roland Deschain', '', 'Roland Deschain', true],
+			['Roland Deschain', null, 'Roland Deschain', false],
+			['Roland Deschain', 'gunslinger@darktower.com', 'Roland Deschain (gunslinger@darktower.com)', false],
+			['Roland Deschain', 'gunslinger@darktower.com', 'Roland Deschain (gunslinger@darktower.com)', true],
 		];
 	}
 
 	/**
 	 * @dataProvider displayNameProvider
 	 */
-	public function testComposeAndStoreDisplayName($part1, $part2, $expected) {
+	public function testComposeAndStoreDisplayName($part1, $part2, $expected, $expectTriggerChange) {
 		$this->config->expects($this->once())
 			->method('setUserValue');
+		$oldName = $expectTriggerChange ? 'xxGunslingerxx' : null;
 		$this->config->expects($this->once())
-			->method('getUserValue');
+			->method('getUserValue')
+			->with($this->user->getUsername(), 'user_ldap', 'displayName', null)
+			->willReturn($oldName);
 
 		$ncUserObj = $this->createMock(\OC\User\User::class);
-		$ncUserObj->expects($this->once())
-			->method('triggerChange')
-			->with('displayName', $expected);
+		if ($expectTriggerChange) {
+			$ncUserObj->expects($this->once())
+				->method('triggerChange')
+				->with('displayName', $expected);
+		} else {
+			$ncUserObj->expects($this->never())
+				->method('triggerChange');
+		}
 		$this->userManager->expects($this->once())
 			->method('get')
 			->willReturn($ncUserObj);