fbpx

Alteração em lote de tamanho de colunas com constraints

Neste artigo, o dataholic Felipe Aguiar compartilha uma forma de alterar em lote o tamanho de colunas que fazem parte de uma primary key ou outras constraints.

Cenário: Cliente solicitou que fosse alterado o tamanho de todas as tabelas que continham a coluna [SERIE] de varchar(3) para varchar(5).

O Problema: Várias tabelas possuíam esta coluna como uma primary key, sendo necessário, desta forma, dropar as constraints e índices, assim como alterar as foreign Keys.

Essa procedure tem como objetivo retornar no output todos os comandos que precisam ser executados e em ordem, para que esta operação possa ser realizada com sucesso.

Exemplo :

use tempdb;

exec altera_tamanho_coluna_lote  @nome_coluna_alvo = ‘serie’, @tipo_dados_tamanho = ‘VARCHAR (5)’

Sem mais delongas, vamos ao script da procedure:

Montando o cenário:

 

Criamos a tabela que irá guardar os scripts

Nesta parte, buscamos todas as tabelas que contenham a coluna informada

Agora buscamos todas as FOREIGN KEYS ligadas as tabelas que identificamos anteriormente

Aqui, retornamos todas as PRIMARY KEYS que estão vinculadas a coluna que vamos alterar o tamanho.

Neste passo, buscamos as default constraints para serem recriadas também.

Aqui, estamos buscando as colunas / tabelas que estão ligadas por uma foreign key a alguma tabela que possui a coluna [SERIE], porém que a tabela “filha” não tenha o mesmo nome de coluna.

Exemplo:

[Tabela1] Possui a coluna [Serie]

[Tabela2] Possui a coluna [Serie2] que é uma foreign key da [Tabela1] coluna [Serie]

Pequena validação para travar o script caso existam outras constraints não suportadas atualmente nesta versão do script.

Aqui temos um passo extra, onde verificaremos o tamanho das tabelas e dos índices.

Ajudará na tomada de decisão quanto a janela de manutenção necessária para realizar a alteração do tamanho da coluna.

Por fim, mas não menos importante, temos a recriação dos índices:

Após coletado todas as informações necessárias, vamos inserir todos os scripts em uma tabela e realizar a ordenação

E aqui, podemos exibir todos os scripts necessários para a realização desta tarefa.

Procedure disponível em: scripts_publicos/altera_tamanho_coluna_lote.sql at main · aguiarfpmr/scripts_publicos (github.com)

 

Espero que tenham gostado e que esse conteúdo possa ajudar de alguma forma, em uma demanda similar.

 

Compartilhar no facebook
Compartilhar no twitter
Compartilhar no linkedin
Compartilhar no whatsapp
Compartilhar no email

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Posts recentes

Gráfico de Linha Dinâmico

Artigo por: Rafael Barbosa Vou mostrar como fazer um gráfico de linha com medidas dinâmicas e que alteram o tipo de dado sem precisar utilizar indicadores

Leia mais »