Oi, Cristina, tudo bem?
Ao tentar alterar o tipo de dado da coluna Nr_hotel
de INTEGER
para SERIAL
, você recebeu um erro de sintaxe. Isso aconteceu porque o comando ALTER COLUMN
só pode alterar a estrutura de uma coluna, mas não pode criar objetos adicionais, como sequências — as quais são determinadas, por exemplo, através do tipo SERIAL.
Para alterar o tipo de dado de uma coluna de INTEGER
para SERIAL
, seguiremos as etapas abaixo:
1 - Adicionar uma nova coluna do tipo SERIAL
à tabela hoteis
:
ALTER TABLE hoteis ADD COLUMN id SERIAL;
2 - Copiar os valores da coluna Nr_hotel
para a nova coluna id
:
UPDATE hoteis SET id = Nr_hotel;
3 - Remover a coluna Nr_hotel
antiga:
ALTER TABLE hoteis DROP COLUMN Nr_hotel;
4 - Renomear a nova coluna para Nr_hotel
:
ALTER TABLE hoteis RENAME COLUMN id TO Nr_hotel;
Explicando os códigos acima, o primeiro comando adiciona uma nova coluna id
do tipo SERIAL
na tabela hoteis
. Em seguida, usamos o comando UPDATE
para copiar os valores da coluna antiga Nr_hotel
para a nova coluna id
. Depois, removemos a coluna antiga Nr_hotel
usando o comando DROP COLUMN
. Por fim, renomeamos a nova coluna id
para Nr_hotel
usando o comando RENAME COLUMN
.
Espero que essa explicação ajude a resolver o seu problema, Cristina! Fique à vontade para perguntar se tiver mais alguma dúvida.
Um forte abraço.
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.