O script abaixo realiza uma tarefa interessante. Através dele é possível atualizar as linhas de uma tabela (ou um conjunto de linhas, caso um filtro seja aplicado) com valores incrementais (o valor inicial e o incremento podem ser definidos).
-- Criando tabela temporária para testes
CREATE TABLE #tmp (id int primary key identity(1,1), counter int default 0)
GO
GO 10
SET @counter = 0
UPDATE #tmp
SET @counter = counter = @counter + 1
-- Veja novamente a tabela com o campo counter preenchido
SELECT * FROM #tmp
CREATE TABLE #tmp (id int primary key identity(1,1), counter int default 0)
GO
-- Inserindo dados na tabela
INSERT INTO #tmp DEFAULT VALUESGO 10
-- Veja como está a tabela
SELECT * FROM #tmp-- PREENCHENDO O CAMPO counter COM VALORES INCREMENTAIS
DECLARE @counter intSET @counter = 0
UPDATE #tmp
SET @counter = counter = @counter + 1
-- Veja novamente a tabela com o campo counter preenchido
SELECT * FROM #tmp
Este script pode ser utilizado para popular qualquer campo que apresente um caráter sequencial, independente do incremento a ser utilizado.
Através dele, pode-se evitar o uso de Cursores e laços While ao fazer atualizações grandes em tabelas.
Já recorri a ele algumas vezes. Foi bastante útil!
Até a próxima!
6 comentários:
Muito show ...
Veja a dica sendo usada em uma solução real:
DECLARE @counter int
SET @counter = (select max(codcliente)+1 from clientes);
update clientes
set @counter = CodCliente = @counter + 1
where codcliente = 0
Obrigado pela dica!!!
Show de bola pela dica !!!
Funcionou perfeito no meu caso....
declare @IdNovo int
select @IdNovo = Max(IdGeoCidade) from GeoCidade
update GeoCidade2 set @IdNovo = IdGeoCidade = @IdNovo + 1
No meu caso precisei colocar na sequencia o ID conforme tabela original de cidade pois depois os dados da tabela GeoCidade2 irá para tabela GeoCidade e será dropada tabela temporária (GeoCidade2).
Abraço.
Perfeito! E eu quebrando a cabeça com o WHILE....
Como eu faria caso.
EU tenho em uma coluna "ClienteID" com valores iguais(seria o ID do Cliente), e preciso numerar esses valores na coluna "Numero", e quando mudar para o proximo valor na coluna "CLienteID" ele começa no "1" de novo?
Cara, se vc morasse perto de mim eu te dava um beijo na boca kkkkkk, estava apanhando pra isso a algumas horas kkkkkk, salvou de maaaaais, obrigado.
Postar um comentário