diff --git a/db/stored/functions.sql b/db/stored/functions.sql
index cb7962c8c6161846ab4213d761f83ca239c3f2c7..3d68bb07be2faf99715574fbf639967e8f86e00b 100644
--- a/db/stored/functions.sql
+++ b/db/stored/functions.sql
@@ -1257,12 +1257,25 @@ CREATE FUNCTION ChangeModuleName (
 ) RETURNS int(11)
 BEGIN
     DECLARE vDisciplineID INT DEFAULT -1;
-    SET vDisciplineID = (SELECT DisciplineID FROM modules WHERE ID = pModuleID LIMIT 1);
+    DECLARE vAlreadySameName BOOL DEFAULT FALSE;
 
+    SET vDisciplineID = (SELECT DisciplineID FROM modules WHERE ID = pModuleID LIMIT 1);
     IF InternalIsMapLocked(vDisciplineID) THEN
         RETURN -1;
     END IF;
 
+    # Bodging, strange row_count() behaviour in some cases.
+    # i.e. update 1 module row. In case it's new and old names are same, row_count value may be 0.
+    SET vAlreadySameName = EXISTS(
+        SELECT * FROM modules
+        WHERE modules.ID = pModuleID AND modules.Type = 'regular' AND modules.Name = pName
+        LIMIT 1
+    );
+    IF vAlreadySameName THEN
+        return 0;
+    END IF;
+
+
     UPDATE modules
         SET modules.Name = pName
         WHERE modules.ID = pModuleID AND modules.Type = 'regular'