Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE DEFINER=`Leo_8ILofB`@`%` PROCEDURE `nick_unique_check`()
- BEGIN
- DROP TEMPORARY TABLE IF EXISTS `names_temp`;
- DROP TEMPORARY TABLE IF EXISTS `rows_temp`;
- CREATE TEMPORARY TABLE `names_temp`(
- `name` VARCHAR(50)
- ) ENGINE=memory;
- CREATE TEMPORARY TABLE `rows_temp`(
- `guid` INT(11),
- `name` VARCHAR(50)
- ) ENGINE=memory;
- INSERT INTO names_temp (`name`) SELECT `name` FROM user_social GROUP BY `name` HAVING COUNT(*) > 1;
- INSERT INTO rows_temp (`guid`, `name`) SELECT guid, `name`
- FROM user_social as social
- WHERE (SELECT COUNT(*) FROM user_social WHERE `name` = social.`name`) > 1;
- BEGIN
- DECLARE count INTEGER DEFAULT 0;
- DECLARE `name` VARCHAR(50);
- DECLARE doneName INTEGER DEFAULT 0;
- DECLARE nickCursore CURSOR FOR SELECT names_temp.`name` FROM names_temp;
- DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET doneName=1;
- OPEN nickCursore;
- REPEAT
- FETCH nickCursore INTO `name`;
- IF NOT doneName THEN
- SET count = 0;
- BEGIN
- DECLARE guid INT(11);
- DECLARE doneGuid INTEGER DEFAULT 0;
- DECLARE guidCursore CURSOR FOR SELECT rows_temp.guid FROM rows_temp WHERE rows_temp.`name` = `name`;
- DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET doneGuid=1;
- OPEN guidCursore;
- REPEAT
- FETCH guidCursore INTO guid;
- IF NOT doneGuid THEN
- SET count = count + 1;
- UPDATE user_social SET user_social.`name` = CONCAT(`name`, " (", count, ")") WHERE user_social.guid = guid;
- END IF;
- UNTIL doneGuid END REPEAT;
- CLOSE guidCursore;
- END;
- END IF;
- UNTIL doneName END REPEAT;
- CLOSE nickCursore;
- END;
- DROP TEMPORARY TABLE IF EXISTS `names_temp`;
- DROP TEMPORARY TABLE IF EXISTS `rows_temp`;
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement