· 8 years ago · Apr 17, 2018, 07:28 PM
1#DELIMITER //
2#CREATE PROCEDURE MoveTeamsProc ()
3# BEGIN
4 #DECLARE OldRowsCount001, OldRowsCount002, NewRowsCount001, NewRowsCount002 INT DEFAULT 0;
5 #START TRANSACTION;
6 #SET OldRowsCount001 = (SELECT Count(ClubID) FROM ClubStatus WHERE DivisionID = "001");
7 #CREATE TEMPORARY TABLE IF NOT EXISTS Temp AS (SELECT * FROM ClubStatus);
8 #UPDATE Club
9 # SET DivisionID = "001"
10 # WHERE TotalPoints IN (SELECT MIN(TotalPoints) FROM Temp WHERE DivisionID = "002" ORDER BY TotalPoints DESC LIMIT 2);
11 #SET NewRowsCount001 = (SELECT Count(ClubID) FROM ClubStatus WHERE DivisionID = "001");
12 # SET OldRowsCount002 = (SELECT Count(ClubID) FROM ClubStatus WHERE DivisionID = "002");
13 # UPDATE Club
14 # SET DivisionID = "002"
15 # WHERE Club.ClubID IN (SELECT * FROM Temp WHERE DivisionID = "001" ORDER BY TotalPoints LIMIT 2);
16 #SET NewRowsCount002 = (SELECT Count(ClubID) FROM ClubStatus WHERE DivisionID = "002");
17 # IF (OldRowsCount001 = NewRowsCount001+2) AND (OldRowsCount002 = NewRowsCount002-2)
18 # THEN COMMIT;
19 # ELSE ROLLBACK;
20 #END IF;
21# END; //
22#DELIMITER ;