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'