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
