Página 1 de 1

Linhas Afetadas no MariaDb

Enviado: 12 Mar 2020 19:10
por asimoes
No Oracle executando o update abaixo sempre retorna 1 linha afetada ou atualizada, no MariaDb só acontece uma vez, se executar novamente o update retorna 0 linhas afetadas
Será alguma configuração?

Código: Selecionar todos

UPDATE IMPETQ 
SET HORA = '18:52:00', 
STATUS = 'I', 
QTDETQ =        701 
WHERE DATA = '2020-03-11' AND OPC = '01'
2020-03-12 19_07_52-AsaPrev_asaprev_impetq_ - HeidiSQL 10.2.0.5599.png

Linhas Afetadas no MariaDb

Enviado: 12 Mar 2020 19:40
por JoséQuintas
Elementar meu caro ASimões, já comentei isso em outro post.

Porque o MariaDB vai atualizar alguma coisa, se não precisa atualizar?

UPDATE test SET VALOR = 0

É como se o MariaDB alterasse para:

UPDATE test SET VALOR = 0 WHERE VALOR <> 0

Leitura é rápida, gravação é demorada, então..... ele grava só se precisar !!!

No futuro vai sair uma mão, dar um tapa na testa e dizer: já troquei porque quer trocar de novo porque? kkkkkk

Linhas Afetadas no MariaDb

Enviado: 12 Mar 2020 20:24
por asimoes
Pois é isso foi a discussão aqui no trabalho, o oracle faz diferente sempre atualiza a tabela mesmo que os valores sejam iguais, o entendimento é que quem manda é o programador se ele quer atualizar os mesmos valores o BD tem que atualizar, mas isso vai de banco para banco coisas do oracle, eu só queria saber se existe alguma configuração para modificar esse default

Linhas Afetadas no MariaDb

Enviado: 12 Mar 2020 20:30
por asimoes
Eu tive que modificar uma função por causa disso, a função fazia um update primeiro o execute tava assim oCommand:Execute(@nCont) se esse nCont retornasse 0 (zero) era feito um insert na tabela, no oracle isso funciona, se não existe registro para atualizar é um insert, se tem o ncont retorna > 0, só que no MariaDb a coisa é diferente.

Linhas Afetadas no MariaDb

Enviado: 12 Mar 2020 20:49
por JoséQuintas
Por enquanto eu acho a situação esquisita.

O normal seria primeiro verificar se tem, pra decidir se atualiza ou insere.
Mas nunca se sabe o que vamos precisar no futuro.

O MySQL tem o INSERT IGNORE, para incluir se ainda não existir, com o acrésimo de uma alternativa pra atualizar caso já exista.
Não sei se atenderia a situação.

Linhas Afetadas no MariaDb

Enviado: 12 Mar 2020 21:41
por asimoes
Acabei criando um select antes para decidir se vai atualizar ou inserir, deve ser assim a solução