Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Alterar o tipo de dados da coluna

Fiz o desafio e coloquei o campo matricula como [CHAR] (5) e na resposta do instrutor está como [VARCHAR] (5) como eu posso alterar o tipo de dados de uma coluna?

Tentei o seguinte:

ALTER TABLE [TABELA DE VENDEDORES] ALTER COLUMN [MATRICULA] [VARCHAR] (5) NOT NULL PRIMARY KEY;

Mas deu o seguinte erro:

Mensagem 102, Nível 15, Estado 1, Linha 63 Sintaxe incorreta próxima a 'PRIMARY KEY'.

Também tirei o Primary Key e o Not Null e não deu, coloquei colchetes no primary key e também não deu.

Outra dúvida.. o texto por ser de tamanho fixo não seria o CHAR invés do VARCHAR ?? Qual é a diferença?

2 respostas
solução!

Olá!

O SQL Server não permite alteração direta do tipo para um campo definido como chave primária.

A alternativa para fazer essa alteração é remover a chave primária, alterar o tipo do campo e definir a chave primária novamente, conforme exemplo:

ALTER TABLE [TABELA DE VENDEDORES] DROP CONSTRAINT [PK_TABELA_DE_VENDEDORES];

ALTER TABLE [TABELA DE VENDEDORES] ALTER COLUMN [MATRICULA] CHAR(5) NOT NULL;

ALTER TABLE [TABELA DE VENDEDORES] ADD CONSTRAINT PK_TABELA_DE_VENDEDORES PRIMARY KEY (MATRICULA);

Em relação a qual tipo utilizar, de fato o o tipo CHAR é recomendado para texto que tenhamos certeza que terão o tamanho fixo (exemplo CPF) e sempre irá ocupar este espaço independente do valor atribuído, já o VARCHAR é recomendado para textos com tamanhos variados e irá ocupar o espaço conforme o valor armazenado. Mas isso não é uma regra absoluta, é sim uma recomendação de boas práticas para um banco melhor estruturado.

Sua solução deu super certo. Obrigada!