Ir para conteúdo

POWERED BY:

Arquivado

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

Roosevelt

Concatenar String em Campo com Relacionamento em outras tabelas

Recommended Posts

Bom Dia, Pessoal

 

Preciso fazer um update em um campo que possui relacionamento em várias tabelas, preciso concatenar '00000' a esse campo em todas as tabelas que ele está relacionado.

 

Alguém pode me ajudar?

 

Obrigado

Roosevelt

Compartilhar este post


Link para o post
Compartilhar em outros sites

Roosevelt,

 

provavelmete você ira precisar utilizar um cursor para isso.

Pode dar mais detalhes do que precisa, se vai ser rodado somente uma vez, varias vezes...

 

Abçs

Compartilhar este post


Link para o post
Compartilhar em outros sites

vou rodar apenas uma vez, preciso alterar o código de uma tabela de cadastro de materiais, eu tinha um formato com 8 caracteres, aumentei a máscara desse código para 12 caracteres e preciso acrescentar '0000' a esquerda do código já existente, mas esse código da tabela de materiais é chave estrangeira em outras tabelas e quando tento fazer o update acusa o erro de relacionamento em outra tabela.

 

Obrigado

Roosevelt

Compartilhar este post


Link para o post
Compartilhar em outros sites

Roosevelt

 

você vai precisar de um cursor para fazer esta modificacao. Vou te passar um exemplo, mas lembre, faça em um ambiente de teste e valide os dados e claro: bkp bkp bkp bkp bkp bkp (nao custa nada lembrar neh ;) )

 

declare @id bigint
declare @campo1 varchar(1000) -- se form sql2005 pode-se usar varchar(max)
declare @campo2 varchar(1000) -- se form sql2005 pode-se usar varchar(max)
declare @campo3 varchar(1000) -- se form sql2005 pode-se usar varchar(max)

DECLARE atualizacao_cursor CURSOR FOR 

select a.id, a.campo1, a.campo2, b.campo3 from tabelaA a inner join tabelaB b on a.id = b.id -- seu inner join com suas tabelas

OPEN atualizacao_cursor
FETCH NEXT FROM atualizacao_cursor INTO @id, @campo1, @campo2, @campo3


WHILE @@FETCH_STATUS = 0
BEGIN

update tabelaA set campo_novo = ('0000'+campo_novo) where id = @id -- pode-se usar para fazer mais de um update ou em varias tabelas deste modo
update tabelaC set campo_novo = ('0000'+campo_novo) where id = @id -- note que esta tabela C nao esta nem no inner join lah em cima

FETCH NEXT FROM atualizacao_cursor INTO @id, @campo1, @campo2, @campo3

END

CLOSE atualizacao_cursor
DEALLOCATE atualizacao_cursor

Veja se isso te ajuda, e lembrando que há outros modo de se fazer.

 

Abçs

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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