Autoincremento

7 respostas
D

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

7 Respostas

S

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

D

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

S

Qual a msg de erro que aparece ?

D

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]

rogelgarcia

defeault tá escrito errado

é default

rogelgarcia

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)

rogelgarcia

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

Criado 12 de março de 2010
Ultima resposta 12 de mar. de 2010
Respostas 7
Participantes 3