Mysql -duvida função para insert ou update caso já exista(resolvido)

1 resposta
brenoeaf

Pessoal tenho que desenvolver uma função no mysql que deve verificar todas as tabelas( ± 50 ) do banco de dados e inserir ou atulizar
todas as tabelas serão baseadas no campo cpf ( chave primaria)
se ainda não existir o cpf insere ,caso contrário atualiza as linhas da tabela.
Como selecionar a tabela e o numero de campos ,se cada tabela tem o total de campos diferentes?
Ex: tabela pessoa
campos: cpf,nome,cidade,uf (4 campos)
tabela alunos
campos cpf,cidade ( 2 campos)

Como fazer a consulta ?

1 Resposta

brenoeaf

Resolvido com procedure

A procedure executa o update se o filtro existir e o insert se for para novos registros
as tabelas,parametros do insert e update, e o filtro são passados como parametros da aplicação para o banco de dados

DELIMITER $$

USE `forum`$$

DROP PROCEDURE IF EXISTS `spInsertorUpdate`$$

CREATE DEFINER=`root`@`%` PROCEDURE `spInsertorUpdate`( 
IN cTabela VARCHAR ( 25 ), 
IN cInsert TEXT, 
IN cUpdate TEXT, 
IN cFiltro TEXT )
BEGIN
SET @a = CONCAT('SELECT count(*) INTO @nRetorno FROM ',cTabela,' WHERE ',cFiltro);
  PREPARE stmt FROM @a;
   
IF (@nRetorno)=0 THEN
SET @b = CONCAT('INSERT INTO ',cInsert);
   PREPARE stmt1 FROM @b;
    EXECUTE stmt1;
    ELSE
 SET @c = CONCAT('UPDATE ',cUpdate);
PREPARE stmt2 FROM @c;
    EXECUTE stmt2;
    END IF;
 DEALLOCATE PREPARE stmt;
  DEALLOCATE PREPARE stmt1;
  DEALLOCATE PREPARE stmt2;
  
END$$

DELIMITER ;
Criado 30 de março de 2010
Ultima resposta 14 de abr. de 2010
Respostas 1
Participantes 1