• Início

  • Soluções

    • Advanced Analytics e IA
    • Database
    • Development
    • Cloud Solutions
  • Cursos

  • Carreira

    • Acelera Jovem
  • Comunidade

  • Blog

  •  

    Use tab to navigate through the menu items.
    Para ver como funciona, vá para o seu site online.
    • Todos os posts
    • Categorias
    • Meus Posts
    dataside
    03 de mai.

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

    em Linguagem de programação

    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.

    1 comentário
    0