Ola Fabiano

qual o comando que vc criou essa tabela?
pois para criar um tipo autoincremento eu uso assim

create table minhatabela (aluno varchar(50) not null , id_aluno bigserial
PRIMARY KEY  , data_nasc date);

[]s
Lui\

Em 10 de fevereiro de 2013 15:01, Fabiano Listas
<[email protected]>escreveu:

> Bom dia, colegas!
>
> Considerem a seguinte situação: eu criei um BD chamado "escola" e uma
> tabela chamada "alunos". Na tabela "alunos", criei as seguintes colunas,
> nesta ordem: aluno (varchar), id_aluno (int) e data_nasc (date). Setei
> "aluno" como sendo NOT NULL e "id_aluno" como sendo NOT NULL e "auto
> increment" (serial).
> Na hora de dar um "INSERT INTO alunos VALUE (etc, etc, etc);",
> obviamente não será preciso que seja inserido o campo "id_aluno", pois o
> próprio SGBD cuida disso pra mim. Acontece que eu não sabia como deveria
> proceder. Pra mim, o fato de digitar: "INSERT INTO alunos VALUE ('José
> dos Anzóis Furados', 26/09/2003)" já fazia com que o SGBD entendesse o
> que deveria ser feito. Porém, na hora de dar um "select * from" na
> tabela vi que o campo "data_nasc" estava vazio e o "id_aluno" estava
> "-2008"! Tudo bem, então, vamos consertar o prejuízo manualmente: dei um
> UPDATE e setei o campo "id_aluno" como deveria estar! Porém, ao tentar
> inserir outro aluno (somente com o nome do aluno e mais nada) o SGDB
> reclamou:
>
> escola=# INSERT INTO alunos VALUES ('José Bibiano Trigueiro');
> ERROR:  duplicate key value violates unique constraint "alunos_pkey"
> DETAIL:  Key (id_aluno)=(1) already exists.
>
> Diante disto eu pergunto:
>
> 1. Como "pular" o id_aluno na hora de inserir dados na tabela?
> 2. Como consertar esse erro para que ele volte a inserir os dados
> corretos na tabela, já que ele vai tentar inserir a chave inteira 1 sem
> sucesso sempre? Ou seja, se uma coluna é auto increment e mesmo assim
> for setado um valor para ela "na marra", na próxima iteração o SGDB vai
> querer usar o valor que foi setado na marra e ele vai reclamar. O que
> fazer?
> 3. Há ainda uma pergunta que não tem nada a ver com a situação acima:
> como inserir uma coluna "status" como sendo do tipo bit? Tentei fazê-lo
> com o comando "UPDATE alunos ADD COLUMN status bit;" e ele me retornou a
> seguinte mensagem:
>
> ERROR:  syntax error at or near "COLUMN"
> LINE 1: UPDATE alunos ADD COLUMN status bit;
>
> No caso da pergunta 1, alguém poderia dizer: "Ah! isso é fácil! É só
> digitar 'INSERT INTO alunos (aluno, data_nasc) VALUE (etc, etc, etc);'"
> Mas se a tabela tiver 50 colunas? Vou ter que digitar TODAS as colunas
> menos a que eu não quero, todas as vezes que eu for inserir algum dado
> na tabela? Ex: "INSERT INTO alunos (aluno, data_nasc, pai, mae, serie,
> turno, turma, professora, status, etc, etc, etc, etc, etc, etc, etc,
> etc...) VALUE (etc, etc, etc...);"
>
> De já, agradeço a ajuda!
> Grande abraço a todos!
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a