[RESOLVIDO]Inserir dados no Banco de Dados com Java

13 respostas Resolvido
postgresqljava
K

Alguém pode me ajudar estou tentando inserir os dados mais ta dando erro de duplicar valor da chave viola a restrição de unicidade eu já coloquei todas as chaves primárias e as secundárias também.

rg.postgresql.util.PSQLException: ERRO: duplicar valor da chave viola a restrição de unicidade "usuario_pkey"

at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2455)

at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2155)

at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:288)

at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:430)

at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:356)

at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:303)

at org.postgresql.jdbc.PgStatement.executeCachedSql(PgStatement.java:289)

at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:266)

at org.postgresql.jdbc.PgStatement.executeUpdate(PgStatement.java:246)

at insercaoBD.main(insercaoBD.java:45)

13 Respostas

K

https://pastebin.com/KikWAkvy

meu SQL

E

Olá Katielen.

Então, é isso mesmo. Está duplicando sua primary key , a qual deve ser um identificador único.

Neste caso você deve rever a sua forma de inserção. Em casa de uso de Hibernate/JPA você deve alterar a sua estratégia de geração sequencial, mudando a anottation para por exemplo:

@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "USU_SEQ")

Caso não esteja usando Hibernate pode pegar o último id inserido na sua tabela de usuário

SELECT MAX(ID) FROM SUA_TABELA

ou também usando nextval da sequence

SELECT NEXTVAL('usuario_id_seq');

K

eu vou tentar aqui,Obrigada

K

mas nessa minha tabela não tem id

E

Algum campo ficou definido com primary key.

De qualquer forma você deve corrigir e inserir um ID para sua tabela, o qual deverá ser sequencial e único.

K

campo login primary key, mas seu colocar o ID na tabela a inserção de dados que vem do XML vai inserir errado

E

Minha sugestão seria você criar esse campo ID auto incremental e deixar o campo login como unique

Já que por se tratar de login o mesmo não poderá ser duplicado.

K

entendi.Obrigada

K

Não posso criar um ID, como é um trabalho não faz parte da especificação

E

Certo.

Então, antes de inserir um novo ‘Objeto’ ao seu banco, você deve efetuar uma busca no login (passando o login que você irá salvar) e verificar se já existe.

Se já existir, você não poderá salvá-lo, pois não aceita login duplicado.

K

Mas a tabela ta vazia , to inserindo os primeiros dados

K

Consegui! Pior que não sei como, mas Obrigada

E
Solucao aceita

kkkkkk

beleza.

Favor marcar o comentário como Conclusão e adicionar ao título [RESOLVIDO]

Criado 23 de outubro de 2017
Ultima resposta 23 de out. de 2017
Respostas 13
Participantes 2