在MySQL中,执行当前一行可以使用“WHERE CURRENT OF”子句来实现。该子句要求在打开游标后使用,游标需要通过DECLARE CURSOR语句声明。在DECLARE CURSOR语句中,需要使用FOR UPDATE子句来告知MySQL该游标可以更新和删除。
DECLARE cursor_name CURSOR FOR SELECT * FROM table_name WHERE condition FOR UPDATE;OPEN cursor_name;FETCH cursor_name;-- update or delete the current rowCLOSE cursor_name;
其中,“FETCH cursor_name”语句用于获取游标当前所在的行。注意,在执行UPDATE或DELETE语句前,必须使用FETCH语句将当前行从游标中读取,否则会导致游标指针移动到下一行,从而无法正确更新或删除当前行。
举个例子:DECLARE test_cursor CURSOR FOR SELECT id, name FROM students WHERE grade='A' FOR UPDATE;OPEN test_cursor;FETCH test_cursor;UPDATE students SET grade='B' WHERE CURRENT OF test_cursor;CLOSE test_cursor;
上述代码会将得到“SELECT id, name FROM students WHERE grade='A'”这些记录,然后在对游标该行执行“UPDATE students SET grade='B' WHERE CURRENT OF test_cursor”更新操作。