Transação MySQL com botão run

Pessoal, boa noite!!

Me encontro no momento com o seguinte problema:

Tenho uma grid com um botão run. Ao selecionar os itens que eu quero inserir e atualizar, ele simplesmente trava meu servidor.

Por isso gostaria de saber se há algo de errado em meu código pois já tentei de várias formas e não consegui nada.

Segue o código:

//onScriptInit
[i] = 0;
[total_chked] = array();

//Evento onRecord do botão
$arr=[i];
[total_chked][$arr]={tipo}."-".{valor}."-".{codigo}."-".{movimento_bancario};
[i]++;

//Evento onFinish do botão
if (!empty([glo_codConta])){	

	$tot = count([total_chked]);
	
	$sql_subclasse = "SELECT valor FROM empresa_parametro "
		           . "WHERE empresa = 1 AND "
		           . "      parametro = 'subclasse'";
	sc_lookup(rs, $sql_subclasse);

	$vlr_subclasse = {rs[0][0]};
	
	sc_begin_trans();
	
	for($x=0;$x<$tot;$x++){
		
		$dados      = explode("-", [total_chked][$x]);
		$tipo_item  = $dados[0];
		$valor_item = $dados[1];
		$cod_item   = $dados[2];
		$mov_banc   = $dados[3];
		
		if (empty($mov_banc)){	
			
			$data_lancamento = date("Y-m-d H:i:s");
			$hoje            = date("Y-m-d");

			if ($tipo_item == 'D'){
	
				$nome_tipo = "DINHEIRO";
	
			}else if($tipo_item == 'C'){

				$nome_tipo = "CHEQUE";

			}

			//////////////////////////////////////////////////////////////////////////////////
			//////////////////////////////// INSERE MOVIMENTO /////////////////////////
			//////////////////////////////////////////////////////////////////////////////////
			$insert_sql = "INSERT INTO mov_bancario (conta, data, data_lancamento, operador, tipo, "
						. "                                documento, valor, conciliado, lancamento_manual, "
						. "                                subclasse, transferencia, historico, situacao) "
						. "VALUE (".[glo_codConta].", '".$hoje."', '".$data_lancamento."', '".[usr_login]."', "
						. "		  'E', '".[glo_codCaixa]."', '".$valor_item."', 'N', 'N', ".$vlr_subclasse.", "
						. "       'N', 'Depósito Caixa: " . [glo_codCaixa] . " ". $nome_tipo . "', 'A')";
			sc_exec_sql($insert_sql);
	
			atualizaSaldo([glo_codConta],"E","N",$valor_item);

			$sql_cod = "SELECT max(codigo) FROM mov_bancario";
			sc_lookup(rs2, $sql_cod);
	
			$upd_cmi = "UPDATE caixa_mov_item SET movimento_bancario = " . {rs2[0][0]} . ", data = '" . $hoje . "' " 
					 . " WHERE movimento_caixa = '".[glo_movimento_caixa]."' AND tipo = '".$tipo_item."'";
			sc_exec_sql($upd_cmi);
	
		}
		
	}
	
	//////////////////////////////////////////////////////////////////////////////////////////////
	////////////////////////////////// ATUALIZA CAIXA_MOVIMENTO //////////////////////////////////
	//////////////////////////////////////////////////////////////////////////////////////////////
	$sqlTot = "select count(*) from caixa_mov_item where movimento_caixa = " . [glo_movimento_caixa]
		    . " and movimento_bancario is null";
	sc_lookup(rs3, $sqlTot);
	
	if ({rs3[0][0]} == 2 && $tot == 2){

		$sit = 'M';

	}else if({rs3[0][0]} == 1 && $tot == 1){
		
		$sit = 'P';
		
	}else if ({rs3[0][0]} == 0 && $tot == 1){
		
		$sit = 'M';
		
	}else if({rs3[0][0]} == 1 && $tot == 2){
	
		$sit = 'M';
	
	}else if({rs3[0][0]} == 2 && $tot == 1){
		
		$sit = 'P';
		
	}else{
		
		$sit = 'M';
		
	}
	
	$upd_cm = "UPDATE caixa_mov SET situacao = '".$sit."' WHERE codigo = " . [glo_movimento_caixa];
	sc_exec_sql($upd_cm);

	sc_commit_trans();

	sc_redir(grid_caixa_mov.php, "", "_parent");
	
}else{
    
    $mensagem = '<span style="color: #ff0000; margin: 10px;">'
              . 'Ocorreu o seguinte erro : Conta não foi selecionada!'
		      . '</span><br>';
	sc_redir(control_mensagem.php, glo_msg=$mensagem; 
			 					   glo_erro='S'; 
			 					   glo_apl='grid_caixa_mov_item';
								   glo_parms="");
    
}

Obrigado!!

Thiago bom dia,

1 - Dê um echo no teu INSERT e UPDATE para checar se o comando está com os dados corretos;
2 - Coloque a macro SC_COMMIT_TRANS() logo após cada SC_EXEC_SQL.

Veja se isso resolve o problema.

Kleyber, ao executar o insert no MySQL Workbench, ele trava e derruba o MySQL. O que será que pode ser?

Verifique o SQL gerado, antes de executar no Workbench.