Colunas Default (e Como Mantê-las)

Muitas vezes precisamos que uma determinada coluna receba um valor padrão, por exemplo, uma tabela de pedidos que, ao inserir um registro novo, coloca por padrão a data atual no campo que referencia a data do pedido.

Ok, mas como é que eu faço isso?

Muito simples, pequeno gafanhoto, ao criar uma tabela:

Putz! Mas o campo Valor também tinha que ter um valor Default… Será que eu consigo colocar sem ter que refazer a criação ou dropar a coluna?

Claro…

Reparem o que aparece ao executar um sp_help:

 

 

Massa né? Tudo bonito!

O Problema é quando, ao invés do código acima, executam isso:

Notaram a diferença? Não foi especificado o nome da constraint Default…

Vejam como fica o nome dela quando isso ocorre:

 

 

 

Viram? Digamos que “DF__MinhaTabe__Valor__4A7F2436” não seja um nome bom para uma constraint (e esse nome pode ser muito pior dependendo do tamanho do nome da tabela e da coluna). Sem contar que o sequencial no final é randomico, ou seja, pra mim foi esse valor. Para você, será outro.
Pensando no caso onde o banco vá para n clientes e seja preciso realizar uma alteração no campo que possui essa constraint, a primeira coisa que deve ser feita é dropar essa constraint, alterar a definição da coluna e então recriar a constraint… E aí, como faz?

Toda essa lenga-lenga foi para chegar onde eu queria… 🙂

Fiz um script bem simples para pegar todas as constraints default de um determinado banco que esteja fora da nomenclatura “padrão” (que eu considero boa) DF_Tabela_Coluna para então deixar da forma como precisamos:

Após executar o script acima, a execução do “sp_help MinhaTabela” mostrará a constraint nomeada corretamente…

Caso queiram baixar para ver/brincar/usar, coloquei os scripts aqui

Qualquer comentário a respeito, inclusive melhorias (que muito provavelmente devem existir), façam. 😉

[]’s!

Deixe um comentário

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

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.