Autoincremento

Olá pessoal!
Comecei a usar o Postgres há alguns dias e estou com uma dúvida…
Já procurei no google, documentação, e o que eu achei não está funcionando.

As duas formas que achei foram:
1.
create sequence nome_da_sequence;
create table produtos (
id_produto integer defeault nextval(‘nome_da_sequence’) not null,
descricao char(60),
preco decimal (15,2),
constraint primary key (id_produto)
);

E tbm usar como tipo do campo SERIAL, isso

Nenhuma deu certo!

Gostaria de saber se alguém sabe algum jeito que dê certo para definir autoincremento ao criar tabelas e tbm qdo já tenho uma tabela criada e desejo alterar o tipo de um dos campos para autoincremento…
Tentei já o Alter table… mas não deu certo tbm…

Agradeço desde já,
Dina

Quando postar trechos de código use as tags code /code.

A respeito da sua dúvida eu achei esse link, vê se ajuda.

http://www.postgresql.org/docs/faqs.FAQ_brazilian.html#item4.11.1

Olá…
Foram exatamente estes códigos que eu usei… e não deu certo…

Qual a msg de erro que aparece ?

Opa!! Funcionou caso eu crie uma nova tabela!!
Mas, para alterar um campo já existente?
Eu tentei usar:

ALTER TABLE autor
ALTERCOLUMN codigo SERIAL;

Apareceu o seguinte erro:
[b]ERRO: erro de sintaxe em ou próximo a “SERIAL”
LINE 2: ALTER COLUMN codigo SERIAL;
^

********** Erro **********

ERRO: erro de sintaxe em ou próximo a “SERIAL”
SQL state: 42601
[b]

Então tentei fazer criando sequência:

CREATE SEQUENCE autor_seq;

E então:

ALTER TABLE autor ALTER COLUMN codigo NOT NULL DEFAULT nextval('autor_seq');

Apareceu o seguinte erro:
[b]ERRO: erro de sintaxe em ou próximo a “NOT”
LINE 2: ALTER COLUMN codigo NOT NULL DEFAULT nextval(‘autor_seq’);
^

********** Erro **********

ERRO: erro de sintaxe em ou próximo a “NOT”
SQL state: 42601
Caracter: 39[/b]

[color=red]Tem alguma forma de mudar um campo para este ser autoincrement?[/color]

defeault tá escrito errado

é default

Tenta colocar o comando todo em uma só linha pra executar o comando no seu programa (talvez ele esteja achando que cada linha é um comando)

ALTER TABLE autor ALTER COLUMN codigo SET DEFAULT nextval('autor_seq'); ALTER TABLE autor ALTER COLUMN codigo SET NOT NULL;
Acho que tem que ser dois comandos separados