Subject Re: [IBO] Transaction with master-child relationship
Author Alfred Seetoh
--- In IBObjects@yahoogroups.com, James Chua <james_027@t...> wrote:
> Hi there
>
> Alfred Seetoh wrote:
>
> > --- In IBObjects@yahoogroups.com, Helen Borrie <helebor@t...>
wrote:
> > > At 07:03 AM 8/12/2003 +0000, you wrote:
> > > >Hi,
> > > > I encounter a *scratch-head* reaction with my master-child
> > > >relationship transaction. My master and child tables are
CUSTOMER
> > and
> > > >ADDRESS respectively. I've set their relationship according to
the
> > > >TransactionsHandling tutorial lesson 2.
> > > >
> > > >Info on child IB_Query:
> > > > MasterLinks: ADDRESS.ID=CUSTOMER.CUST_ID
> > > > MasterSource: DSCustomer
> > >
> > > Are you sure this relationship is correct? Surely, your detail-
to-
> > master
> > > link should be through a foreign key in the ADDRESS table -
> > ADDRESS.CUST_ID
> > > or something similar. ADDRESS.ID seems like it would be the
> > > **primary key** of the address table....
> >
> > The primary key of ADDRESS table is (ID, ENTITY, ADDRESS_TYPE). I
> > intend to use this table to store addresses of customers, vendors
and
> > etc. Therefore I have the ENTITY field to identify the address is
for
> > what kind of entity. ID will be the ID of that entity.
ADDRESS_TYPE
> > will be either 'Billing', 'Delivery' and etc.
> >
> > I did not create a foreign key in my ADDRESS table because I
can't.
> > This table *references* different tables based on the ENTITY
field.
> >
> > Do you mean the absence of a foreign key is the reason why it
won't
> > work?
> >
> Helen is right. Your master child relationship ins't setup right. I
> though the ID field you have their in your address table is
referring to
> the customer ID in your customer table. You should have a field in
your
> address table that is a foreign key that points to the customer id
in
> your customer table. Then if you re setup your mater child
relationship
> correctly, everything will work out fine.
>
> James

Ok, I changed my ADDRESS table's primary key to (ID, ADDRESS_TYPE),
and added a foreign key on ID to reference CUSTOMER.CUST_ID. Changed
the KeyLinks property of QueryAddress to ADDRESS.ID and
ADDRESS.ADDRESS_TYPE. MasterLinks property remains as it is.

Result? It still won't work!