Fazer SELECT, UPDATE e INSERT (em um mesmo método), de forma que não sobrecarregue o servidor
Olá, pessoal
Estou desenvolvendo uma aplicação, e dentro disso, surgiu um problema.... Preciso fazer SELECT dos dados, após dar um UPDATE nesses mesmos dados recebidos e por fim realizar um INSERT.
Seria muito fácil fazer isso, afinal, bastava fazer um encapsulamento dos dados e pronto. No entanto, queria saber se existe uma forma para não sobrecarregar o servidor com esse COMBO de "Request/Response".
Tentei por PROCEDURE, mas necessito verificar os dados recebidos com o que já estão cadastrados na tabela, para então realizar o UPDATE..
Alguém poderia me ajudar com isso?
Para resumir tudo...
Preciso, apenas, de uma maneira para fazer SELECT, UPDATE e INSERT (com verificação dos dados, por isso o SELECT) de uma forma que não sobrecarregue o servidor. Por quê? Porque seria uma rotina de uns 1.000 usuários realizando isso, quase que simultaneamente, no servidor. Com isso mau feito, acredito que iria FERRAR meu bolso com um servidor MONSTRO :(
PROCEDURE que tentei, mas não consegui...
DELIMITER $$
CREATE PROCEDURE confere_qts (id INT, opcao INT, chute INT, cron INT, id_usus INT)
BEGIN
SELECT `correta_qts`, `resolucao_qts`, `qtd_res_qts`, `qtd_chutes_qts`, `qtd_acertos`, `a_qtd_qts`,
`b_qtd_qts`, `c_qtd_qts`, `d_qtd_qts`, `e_qtd_qts`, `tempo_qts`
FROM qts_cad
WHERE id_qts = id;
UPDATE qts_cad SET qtd_res_qts = +1, tempo_qts = cron WHERE id_qts = id;
INSERT INTO respostas_qts_resp(`idUsus_resp`, `idQts_resp`, `alternativa_resp`, `correta_resp`, `tempo_resp`, `date_resp`, `chute_resp`, `revisar_resp`)
VALUES(id_usus, id, opcao, correta_qts, cron, NOW(), chute, 0);
IF chute = 1
BEGIN
UPDATE qts_cad SET qtd_chutes_qts = +1 WHERE id_qts = id;
END
IF opcao = correta_qts
BEGIN
UPDATE qts_cad SET qtd_acertos_qts = +1 WHERE id_qts = id;
END
IF opcao = 1
BEGIN
UPDATE qts_cad SET a_qtd_qts = +1 WHERE id_qts = id;
END
IF opcao = 2
BEGIN
UPDATE qts_cad SET b_qtd_qts = +1 WHERE id_qts = id;
END
IF opcao = 3
BEGIN
UPDATE qts_cad SET c_qtd_qts = +1 WHERE id_qts = id;
END
IF opcao = 4
BEGIN
UPDATE qts_cad SET d_qtd_qts = +1 WHERE id_qts = id;
END
IF opcao = 5
BEGIN
UPDATE qts_cad SET e_qtd_qts = +1 WHERE id_qts = id;
END
END $$
Discussão (11)
Carregando comentários...