Bom dia.
Gostaria de saber se consigo fazer um UPDATE da forma abaixo ou parecido.
Ex: UPDATE tabelaX SET col2 = (6,5,4,3,2,1) WHERE ID IN(1,2,3,4,5,6)
Creio eu que NÃO… vc tem que fazer uma atualização por vez
UPDATE nomeTabela SET nomeColunaAlterar='3' WHERE `idRegistro`='2';
Desta forma não funciona, o BD não reconhece esta sintaxe!
Ex: UPDATE tabelaX SET col2 = (6,5,4,3,2,1) WHERE ID IN(1,2,3,4,5,6);
Você pode fazer isso aqui:
UPDATE tabelaX SET col2 = 6 WHERE ID IN(1,2,3,4,5,6);
UPDATE tabelaX SET col2 = 6 WHERE ID = 1;
O que eu preciso é atualizar ao mesmo tempo vários registros porém cada um com um valor. Na mesma coluna. Na verdade eu gostaria se fosse possível. Um de cada vez já é feito.
Precisa ser feito direto no BD essa atualização, ou pode ser feita via aplicação ?
É via aplicação. Mas não queria usar por exemplo um for para atualizar um de cada vez e sim com uma instrução só.
Vc não especificou qual DB, porém a maioria aceita uma construção semelhante a esta.
UPDATE tabelaX SET col2 = 6 WHERE ID = 1 AND (
UPDATE tabelaX SET col2 = 5 WHERE ID = 2 AND (
UPDATE tabelaX SET col2 = 4 WHERE ID = 3 AND
… vc já entendeu …
))))));
Essa possibilidade eu nao conhecia… vivendo e aprendendo
Também da pra criar uma função e colocar estes em operações separadas dentro da função.
Caso precise que só seja concluído caso todos executem sem erro vc coloca o commit após as operações e caso um de erro execute um rollback
Caso seja uma operação constante vc pode colocar em uma procedure e disparar com uma trigger
Cara, da forma que você quer fazer, eu desconheço recursos existentes para realizar tal tarefa, e nunca vi nada parecido em lugar nenhum!
A única forma de atualizar é com laço de repetição, tanto na aplicação como no BD, um registro por vez.
MYSQL é o DB.
Achei a solução!
Setar uma variável com valor 0 (SET @n = 0;)e usá-la com auto incremento (@n := @n+1) :
1. SET @n = 0;
2. UPDATE datatypetags SET ORDINE = (@n := @n+1) WHERE ID IN(1,2,3,4,5,6);
Achei a solução aqui: https://elias.praciano.com/2015/03/como-listar-resultados-das-tabelas-com-linhas-numeradas-no-mysql/