Outro dia, conversando com um analista de sistemas no trabalho, este me perguntou, qual era melhor, usar o tipo text ou varchar no campo.
Bom, baseado em minhas experiências, respondi que prefiro trabalhar com varchar. Mas antes, uma breve pesquisa no google nos mostrou que:
text | Variable-length data with a maximum length of 2^31 - 1 characters |
varchar | Variable-length data with a maximum of 8,000 characters |
fonte: Database Journal |
Depois de analisarmos o propósito a que o campo serviria, decidimos por um campo varchar(500).
Se você, assim como eu, tentou utilizar uma alter table, alter column, deve ter visto um aviso do SQL Server de que isto não é possível de se fazer. Mas e agora?
É isso mesmo que pensamos: temos que criar o novo campo e popular com o que havia no antigo campo. Exemplo:
EXEC sp_rename 'tab_inf_nota.mensagem', 'mensagem_old', 'COLUMN'
ALTER TABLE tab_inf_nota ADD mensagem VARCHAR(1500)
UPDATE tab_inf_nota SET mensagem = SUBSTRING(mensagem_old, 1, 1500)
ALTER TABLE tab_inf_nota DROP COLUMN mensagem_old
Bom, o que acontece é o seguinte:
linha 1: renomeia o coluna text, mensagem, para outro nome.
linha 2: adiciona a coluna nova, varchar(500).
linha 3: atualiza a coluna varchar com o que havia na coluna text.
linha 4: exclui a antiga coluna text.
Comentários