DROP PROCEDURE IF EXISTS big_table_update;
CREATE PROCEDURE big_table_update()
BEGIN
DECLARE v_update_limit INT(10) DEFAULT 5;
DECLARE v_primary_key_start, v_primary_key_end BIGINT(20) DEFAULT 0;
DECLARE v_error_code CHAR(5) DEFAULT '00000';
DECLARE v_error_message VARCHAR(512) DEFAULT '';
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
GET DIAGNOSTICS CONDITION 1 v_error_code= RETURNED_SQLSTATE,v_error_message= MESSAGE_TEXT;
INSERT INTO error_log(type, title, code, message) VALUES ('test', 'big_table_update', v_error_code, v_error_message);
COMMIT;
END;
WHILE EXISTS(SELECT 1 FROM big_table WHERE id > v_primary_key_start)
DO
BEGIN
START TRANSACTION