Primary key e Foreign key

8 respostas
databaseprogramaçãojavasqlmysql
F

Pessoal estou desenvolvendo um sistema que tem codigo de venda, e codigo de item de venda
Quero que apareça o codigo de venda 1 e codigo de item de venda 1, e de acordo com que vou adicionando quero que apareça assim 1.2, 1.3, 1.4

Mas ele dá erro pois esse “1” é primary key e não pode duplicar o valor de uma primary key

Minha pergunta é como posso duplicar um valor de uma primary key ?

Detalhe uso o banco de dados PostgreSql e o Netbenas

8 Respostas

J

Não se duplica uma primary key, isso é quebra de integridade!

F

então como faço para gerar o valor de uma primary key duplicada ?

P

Tens de dar mais detalhe sobre o que pretendes. Como estão neste momento as tuas tabelas?

F

tenho uma tabela item_venda com primary key item_id serial auto
e outra com venda com primary key ven_id integer

Toda vez que adiconar o cod_venda ela vai trazer pra mim o codigo da venda e o, codigo do item de venda.

Exemplo adicionei apareceu
Codigo de venda Codigo de item de venda
1 1

pois fiz o inner join peguei o codigo do item que me gerou sozinho devido estar auto.

Agora quero adicionar outro “Mas sem mudar o 1 do codigo de venda”

Exemplo:

Codigo de venda Codigo de item de venda
1 2

Codigo de venda Codigo de item de venda
1 3

Codigo de venda Codigo de item de venda
1 4

P

Pelo que descreves, esse cenário funciona porque a PK da tua tabela de item é o item_id e não o ven_id (que não muda nem precisa mudar). De certeza que o erro não é por outro qualquer motivo?

F

então pra esse cenario que te descrevi dar certo o que precisaria fazer

P

Pelo que descreveste nada. Já deveria funcionar. O que podes ter problemas é ao gerar a segunda venda, onde o primeiro item será continuidade do primeiro e não novamente 1. Para teres 1-1, 1-2, 1-3 depois 2-1, 2-2 e 3-1, 3-2, 3-3, 3-4 e sucessivamente necessitas de uma chave composta com ven_id e item_id.

M

Cara, como @pmlm falou, vc precisa de uma chave composto por ven_id e item_id. Dessa forma, vc vai conseguir fazer a sequência que vc deseja.

Explicação:
Pelo que vc falou a tabela venda possui um relacionamento um-para-muitos com a tabela item_venda (1 venda possui muitos itens. 1 item vendido pertence a 1 venda).
Dessa forma, vc deve gerar uma tabela criar uma chave estrangeira no lado N do seu relacionamento (venda), sendo que a chave dessa tabela deve ser composta pela PK das duas tabelas

Criado 10 de fevereiro de 2017
Ultima resposta 10 de fev. de 2017
Respostas 8
Participantes 4