diff --git a/apps/user_ldap/lib_ldap.php b/apps/user_ldap/lib_ldap.php
index 5cd7e0241bf26ba9106fd288e35808c682b93d98..b900a67ec312d14940c4c480d93d4ce64f641810 100644
--- a/apps/user_ldap/lib_ldap.php
+++ b/apps/user_ldap/lib_ldap.php
@@ -366,19 +366,24 @@ class OC_LDAP {
 		$table = self::getMapTable($isUser);
 		$dn = self::sanitizeDN($dn);
 
-		$sqliteAdjustment = '';
+		$sqlAdjustment = '';
 		$dbtype = OCP\Config::getSystemValue('dbtype');
-		if(($dbtype == 'sqlite') || ($dbtype == 'sqlite3')) {
-			$sqliteAdjustment = 'OR';
+		if($dbtype == 'mysql') {
+			$sqlAdjustment = 'FROM dual';
 		}
 
 		$insert = OCP\DB::prepare('
-			INSERT '.$sqliteAdjustment.' IGNORE INTO '.$table.'
-			(ldap_dn, owncloud_name)
-			VALUES (?,?)
+			INSERT INTO '.$table.' (ldap_dn, owncloud_name)
+				SELECT ?,?
+				'.$sqlAdjustment.'
+				WHERE NOT EXISTS (
+					SELECT 1
+					FROM '.$table.'
+					WHERE ldap_dn = ?
+						AND owncloud_name = ? )
 		');
 
-		$res = $insert->execute(array($dn, $ocname));
+		$res = $insert->execute(array($dn, $ocname, $dn, $ocname));
 
 		return !OCP\DB::isError($res);
 	}