INSERINDO VALORES NA CHAVE ESTRANGEIRA

USUARIO.EXCLUIDOS 19/12/2006 09:50:49
#190811
Bom Dia Pessoal,

Estou com uma dúvida em relação a chave estrangeira...desculpem a dúvida que pode parecer meio óbvia, mas estou sem entender???

Estou trabalhando com 3 tabelas onde 2 delas possuem FK:
- cliente
- orçamento(ID_Cliente)
- aparelho(ID_Orcamento)

Ao inserir valores nas tabelas no IB Expert, os campos de FK ficam NULL...

Gostaria de saber se ao inserir corretamente os valores nas PK correspondente de cada tabela, não seria para ser inserido nos campos FK os valores das PK automaticamente, já que está referenciado no IB Expert??
THIGO 19/12/2006 10:15:53
#190816
Não se for fk vc tera qe informar o numero a ser gravado a nao ser qe vc coloco o mesmo codigo do cliente no orcamento e no aparelho tipo

txtorcamento.text = txtcodcliente.text
txtaparelho.text = txtcodcliente.text

entendeu
USUARIO.EXCLUIDOS 19/12/2006 10:36:23
#190819
A FK serve para gerar a integridade entre as tabelas. Não há como incluir automaticamente esse valor. Caso os códigos das FK's não estiverem cadastrados, o registro não será incluído. Se uma FK estiver NULL, sua integridade referencial não servirá pra nada!
USUARIO.EXCLUIDOS 19/12/2006 10:39:03
#190821
GCPNUNES,

Quando trabalhamo com chave estrangeira FK, na hora de inserirmos um registro na tabela filho, temos de informar o valor que deverá ser armazenado nestam pois, como poderemos ter vários registros na tabela pai, o computador não tem como saber qual deles terá relação com o filho, temos de falar para ele.

Como exemplo veja o seguinte:

Tenho a tabela clientes:

codCli
Nome

Nesta tabela tenho os seguintes valores

1 Marco
2 André

Tenho uma tabela CompraCli:

codCompra
CodCli
Valor

Onde codCli seria o campo de ligação com a tabela cliente.

então o cliente marco fez uma compra. A chave da compra, ou seja o campo codCompra é um campo de preenchimento automático e ganhou o valor 1, o campo Valor, devo informar, sendo assim a compra foi de 100,00, agora como o computador irá saber se a compra foi feita pelo marco ou pelo André. como foi feita pelo Marco passaria o valor 1 para o campo CodCli e realizaria a inserção, criando o seguinte registro:

1 - codigo da compra
1 - codigo do cliente
100 - valor da compra.

Sendo assim as duas tabelas estão vinculadas pelo campo codCli. se fosse fazer um select onde quissese pegar todas as compras do Marco, mostrar seu Codigo e seu valor, criaria uma query assim

Select c.nome, cc.codcompra, cc.valor
from clientes c, CompraCli cc
where c.codcli = cc.codcli

Espero ter esclarecido melhor a sua dúvida.






USUARIO.EXCLUIDOS 21/12/2006 09:33:29
#191395
Acho q entendi...porém uma observação;

se eu quiser inserir valores para FK, devo fazer isso ao inserir os dados na tabela? por ex.:

strGravarAparelho = "INSERT INTO aparelho (marca, descricao, ID_cliente, ID_Orcamento) VALUES('" & marcatxt.Text & "', '" & descricaotxt.Text & "', " & codigoClientetxt.Text & "," & codigoOrcamentotxt.Text & ")"
CON.Execute (strGravarAparelho)

OBS: os campos de FK da tabela Aparelho são: (codigoOrcamentotxt.text e codigoClientetxt.text)

OBS: Se essa for uma das alternativas corretas de inserção de valores nas FK, esse campo não seria mais um campo comum igual aos outros, sem estar fazendo referencia de uma tabela a outra?

Desculpem a insistência, mas estou iniciando agora a utilizar VB com acesso a Banco de Dados...

Tópico encerrado , respostas não são mais permitidas