Atualizar direto

SQL Server

22/12/2006

Olá galera tudo bem?
Estou com um grande, gigantesco problema. Nó stemos um sistema aqui que apresenta em torno de 1230 tabelas, e destas umas 1200 tem um campo chamado EMPRESA onde ele grava o ID da empresa que está sendo utilizado.
O que eu gostaria era de, como fazer via sql, trigger ou Store uma maneira de ele atualizar os dados deste campo, ou seja, atualmente este campo esta sendo alimentado como 1, e agora ele quer passar para a segunda empresa que é a de código 2.
Como eu faço isto? Atualizo estes dados destas tabela sem precisar criar uma sentença SQL de update para cada tabela? Imagina eu criar um [b:81935aa0cf]update TABELA set EMPRESA = 2 where EMPRESA = 1[/b:81935aa0cf] para todas as 1200 tabelas. Vai demorar d+.

Aguardo alguma sugestão.

Atenciosamente


Edmarcarvalhaes

Edmarcarvalhaes

Curtidas 0

Respostas

Psergio.p

Psergio.p

22/12/2006

Caro amigo, só uma pergunta antes de te ajudar: Não existem dados relacionados com estas tabelas? como ficariam, seriam alterados em cascata?


GOSTEI 0
Edmarcarvalhaes

Edmarcarvalhaes

22/12/2006

Olá doutor tudo bem?
Não.. para estes campo não existe dados relacionados. O que eu relaciono são os campos de ID de cada tabela. Por isto eu deseja alterar este código para todas as tabelas automaticamente.

Aguardo uma sugetão.


GOSTEI 0
Edmarcarvalhaes

Edmarcarvalhaes

22/12/2006

Olá galera tudo bem?

Kd a minha resposta. Será que alguém pode me ajudar no item acima?


GOSTEI 0
Psergio.p

Psergio.p

22/12/2006

Caro amigo,

Me dá um feedback depois!
Segue o código:

DECLARE @strSQL NVARCHAR(200)
DECLARE @TableName NVARCHAR(200)

DECLARE CURATU CURSOR FOR
SELECT sysobjects.name FROM syscolumns INNER JOIN
sysobjects ON sysobjects.ID = syscolumns.ID WHERE
sysobjects.xtype = ´U´ AND syscolumns.name = ´<SUA COLUNA AQUI>´
OPEN CURATU
FETCH NEXT FROM CURATU INTO @TableName

WHILE @@FETCH_STATUS = 0
BEGIN
SET @strSQL = ´UPDATE ´ + @TableName + ´ SET <SUA COLUA AQUI> = 10´
EXEC(@strSQL)
FETCH NEXT FROM CURATU INTO @TableName
END
CLOSE CURATU
DEALLOCATE CURATU


GOSTEI 0
Psergio.p

Psergio.p

22/12/2006

Corrigindo:

DECLARE @strSQL NVARCHAR(200)
DECLARE @TableName NVARCHAR(200)

DECLARE CURATU CURSOR FOR
SELECT sysobjects.name FROM syscolumns INNER JOIN
sysobjects ON sysobjects.ID = syscolumns.ID WHERE
sysobjects.xtype = ´U´ AND syscolumns.name = ´<SUA COLUNA AQUI>´
OPEN CURATU
FETCH NEXT FROM CURATU INTO @TableName

WHILE @@FETCH_STATUS = 0
BEGIN
SET @strSQL = ´UPDATE ´ + @TableName + ´ SET <SUA COLUA AQUI> = <SEU VALOR AQUI>´
EXEC(@strSQL)
FETCH NEXT FROM CURATU INTO @TableName
END
CLOSE CURATU
DEALLOCATE CURATU


GOSTEI 0
Edmarcarvalhaes

Edmarcarvalhaes

22/12/2006

Eu posso fazer isto direto dentro de uma TRIGGER. Vou testar e te aviso.

Obrigado


GOSTEI 0
Edmarcarvalhaes

Edmarcarvalhaes

22/12/2006

Olá tudo bem?
Eu posso colocar este código dentro do QUERY ANALIZER e executar o comando?
OU devo fazer como uma trigger e atualizar uma tabela para ele atualizar tudo?


GOSTEI 0
Psergio.p

Psergio.p

22/12/2006

Executa direto no Query Analyser!


GOSTEI 0
POSTAR