Atualizar direto
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
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
Curtidas 0
Respostas
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
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.
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
22/12/2006
Olá galera tudo bem?
Kd a minha resposta. Será que alguém pode me ajudar no item acima?
Kd a minha resposta. Será que alguém pode me ajudar no item acima?
GOSTEI 0
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
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
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
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
22/12/2006
Eu posso fazer isto direto dentro de uma TRIGGER. Vou testar e te aviso.
Obrigado
Obrigado
GOSTEI 0
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?
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
22/12/2006
Executa direto no Query Analyser!
GOSTEI 0