Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

fabioso

MySQL INSERT somente se dois campos não coincidirem

Recommended Posts

Olá pessoal, tudo bem.

 

Me ajuda, por favor! uma ideia um caminho ou uma solução.

 

Desde já agradeço-lhes.

 

Preciso de um único registro com LISTA e ID atualizando apenas o TOKEN se tiver mudado.

o campo TOKEN tem uma função em PHP que atualiza mensalmente, por isso é o unico campo que pode mudar depois de incluido na tabela.

 

LISTA          ID              TOKEN

1                  1525          xyz43x  (Primeiro click no botão lista 1)

1                  1525          45xopx (Segundo click no botão lista1 deve UPDATE  apenas no campo TOKEN)

2                  1525          45xopx (Primeiro click no botão lista 2 inclui na lista com o mesmo TOKEN, mas a lista é diferente OK

1                  9999          oppx48  OK

2                  9999          oppx48  OK

 

 

#1 - Já tentei usar ON DUPLICATE KEY UPDATE - UNIQUE index LISTA depois testei co ID sem sucesso.

$stmt = $conn->prepare("INSERT IGNORE INTO table (lista,id,token) 
        VALUES (:lista,:id,:token)
       ON DUPLICATE KEY UPDATE token = :token");  

 

obs: Em geral, você deve tentar evitar usar uma cláusula ON DUPLICATE KEY UPDATE em tabelas com vários índices exclusivos.

 

 

#2  Utilizando IGNORE statement UNIQUE index LISTA depois testei co ID sem sucesso.

ALTER TABLE table ADD UNIQUE INDEX(LISTA, ID);

 

INSERT IGNORE INTO table (columns) VALUES (...)

 

 

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha, não entendi muito bem a sua explicação, vou me basear apenas no titulo e em:
 

29 minutos atrás, fabioso disse:

Preciso de um único registro com LISTA e ID atualizando apenas o TOKEN se tiver mudado.


De uma olhada se o REPLACE INTO atende as suas necessidades

https://pt.stackoverflow.com/questions/111446/para-que-serve-o-replace-into-no-mysql

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por vicente386
      Ola. Tenho uma tabela no 3 campos que sao "LIVRO, POS, PAGINA" ao qual a logica e a seguinte: cada livro tem 100 paginas cada pagina tem 30 posiçoes tenho 8,364 registros pra inserir chegando a 100 paginas com 30 posiçoes cada passa para o livro 2 e como fazer o update na tabela inserindo nos campos LIVRO = 1, POS de 0 a 30 e PAGINA 1 para cada 30 registros logos apos pagina 2 ?
      estou tentando fazer assim:
      <?php > ini_set('max_execution_time', 2000); $pdo = new > DO(DB_SERVER.":host=".DB_HOST.";dbname=".DB_BASE,DB_USER,DB_PASSWORD); > $sql = $pdo->prepare("SELECT count(*) FROM tabela2018"); > $sql->execute(); > $livro = 1; > foreach($sql as $obj){ > $variavel = $obj[0]; > ceil((float)$variavel/100); > $qtdlaco = ceil((float)$variavel/100); > for ($id = 1; $id <= 35; $id++) { > for($L=1; $L < $qtdlaco; $L++) { > for ($P = 0; $P <= 30; $P++) { > $sql = $pdo->prepare("UPDATE tabela2018 SET LIVRO = :LIVRO, POS = :POS, PAGINA = :PAGINA WHERE idtabela2018 = $id"); > $sql->bindValue(':LIVRO', $livro); > $sql->bindValue(':POS', $P); > $sql->bindValue(':PAGINA', $L); > $sql->execute(); > } > } > } >} ?> mas na tebela so aparece: LIVRO POS PAGINA 1 30 83 1 30 83 1 30 83 e nao como deveria : LIVRO POS PAGINA 1 0 1 1 1 1 1 2 1
    • Por Luiz Henrique
      Olá,
       
      Preciso fazer uma inserção no DB de registros referente a pagamentos, quando for no crédito será realizado o insert com sua respectiva data de compensação e valor da parcela exemplo:
       3 parcelas de 100.00 e cada registro em seu devido mês:
      INSERT INTO tabela (valor, data) VALUES (100, 2022-08-17),(100, 2022-09-17),(100, 2022-10-17) É mais eficiente fazer da forma acima ou colocar 3 INSERT?
      Ou existe forma melhor de fazer isso?
       
      Obrigado.,
       
    • Por Carlos Antoliv
      Senhores, bom dia.
       
      tenho um campo status. Então, a ideia é mudar o status. Consigo alterar o status quando necessário. Daí, pensei em todas vez que alterar, salvar o id do usuário, data, hora, o último status alterado...
      consigo fazer isso com INSERT, depois do UPDATE.
       
      Nao uso trigger. Até tentei fazer, mas não saiu como eu queria.
       
      Então, para os maiores entendedores do assunto, a melhor prática seria a TRIGGER ou INSERT ? Melhor prática ou o que mais funciona na prática ?
       
      Alguém poderia dissertar sobre isso ?
      Vlw..abço
    • Por unset
      Olá, estou com uma falha de lógica pegando aqui se alguém puder ajudar
       
      Eu tenho um formulário tranquilo, como abaixo
      <label for="cidades" class="form-label">Cidades</label> <select class="form-select mb-3" name="cidades[]" id="cidades" multiple="multiple"> <option value="1">Cidade 1</option> <option value="2">Cidade 2</option> <option value="3">Cidade 3</option> <option value="4">Cidade 4</option> <option value="5">Cidade 5</option> </select>  
      Blz eu recebe os dados do formulário ou seja os ids da cidade certinho em um array 
       
      array(3) { [0]=> string(1) "2" [1]=> string(2) "3" [1]=> string(1) "5" }
      <?php $dados = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRIPPED); var_dump($dados); ?> Agora como inserir todos os ids no banco? utilizando um for? um while? algum exemplo?
       
      Pergunto pq ao tentar inserir no banco somente um registro é inserido e não todos do select
       
    • Por lezão
      Boa tarde, galera!
      Td bem com vcs?
       
      Estou precisando de um UPDATE que qnd eu seleciono o checkbox e clico no botão submit ele chama para a pagina que ira fazer a alteração.
      Tenho um exemplo só que  em asp, vejam abaixo:
      Imagem UPDATE
       
      espero ter explicado certo.
       
      obrigado!
       
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.