Soluções em Software



Desenvolvimento de Software
Sistemas WEB
Aplicativos Mobile
(app celulares e tablets)

Portais Blogs e Soluções WEB 2.0

Serviços de chat - Webnews Webconteúdo - Quiz - FAQ
Marketing Digital
Mídias sociais
Gestão de conteúdo
Portais de Comercio Eletrônicos
Lojas Virtuais

Gestão Eletrônica de Documentos



Digitalização de Documentos
Grandes Formatos
Guarda Documental
Workflows

Projetos On-Demand



Um projeto com a SUA cara.

O software se adapta as necessidades da sua empresa e não o contrário.



Soluções Tecnológicas
A CACTUS Tecnologia da Informação acredita na liberdade, em qualquer lugar e a qualquer momento, por isso fornece soluções inovadoras que realmente geram resultados nas corporações e na vida das pessoas.
Instagram
Facebook
Contato
BLOG

ATUALIZAR LINHA OU ISNERIR CASO NAO EXISTA NO MYSQL

04/10/2016 por Renato Dantas


A SITUAÇÃO ERA A SEGUINTE: PRECISAVA FAZER UM REGISTRO DE VISITAS DAS MATERIAS DO MOSSOROHOJE
PARA PODER FAZER UM RELATORIO DE NUMERO DE VISITA POR DIA, POR MES E ETC.

PARA ISSO CRIEI UMA TABELA CHAMADA historico CONTENDO APENAS O ID DA MATERIA, A DATA E O TOTAL DE VISITAS.

DEPOIS DISSO ENCONTREI NA INTERNET 2 FORMA DE RESOLVER O PROBLEMA. USANDO O "REPLACE" OU O "ON DUPLICATE KEY"

UM EXEMPLO DO COMANDO REPLACE SERIA:

$sql = "REPLACE into table (id, name, age) values(1, 'A', 19)";

PORÉM O QUE EU UTULIZEI FOI O OUTRO, QUE FICOU DA SEGUINTE FORMA

$sql = "INSERT INTO historico (hist_nb_materia,hist_tx_data,hist_tx_visitas) VALUES('$materia','$data','$visitas')
ON DUPLICATE KEY UPDATE hist_tx_visitas = hist_tx_visitas + $visitas";

COM ISSO O QUE O MYSQL FAZ É ATUALIZAR A LINHA, CASO EXISTE, OU INSERIR CASO NAO EXISTA. AGILIZANDO ASSIM O NOSSO TRABALHO
E DIMINUINDO O USO DO MYSQL PORQUE EVITA TER QUE FAZER UMA CONSULTA PARA VERIFICAR SE JÁ EXISTE CADA LINHA ANTES DE INSERIR.

LEMBRANDO QUE PARA ISSO FUNCIONAR A TABELA FICOU DA SEGUINTE FORMA
CREATE TABLE historico (
hist_nb_materia int(5),
hist_tx_visitas int(5),
hist_tx_data datetime,
);

E POR FINAL PRECISOU DO SEGUINTE COMANDO:
ALTER TABLE `historico` ADD UNIQUE `unique_key` ( `hist_nb_materia`,`hist_tx_data` )
TAGS