Thread: REFERENCES
Hi to all, i have a simple problem and wont request assistance fro m this list. i have to tables foo: id int8 UNIQUE bar: id int8 UNIQUE foo_id int8 Now i wont foo_id to be a id which exists in the foo, this could be done with foo_id REFERENCES foo (id). But what should i do if i want foo_id to be a id existing in foo or to be zero(0). I have created a view as "select id from foo UNION select 0" and tried to REFERENCE against this view, but that doesnt work. Can this problem be solved by a somebody ???? Thanks -- Andre Schubert EMail: Andre.Schubert@km3.de Tel: 03774 6625-78 km3 teledienst GmbH Fax: 03774 6625-79
On Wednesday, March 13, 2002 11:53 AM Behalf Of Andre Schubert wrote: > Hi to all, > > i have a simple problem and wont request assistance fro m this list. > i have to tables > > foo: > id int8 UNIQUE > > bar: > id int8 UNIQUE > foo_id int8 > > Now i wont foo_id to be a id which exists in the foo, this could be done > with foo_id REFERENCES foo (id). > But what should i do if i want foo_id to be a id existing in foo or to > be zero(0). > I have created a view as "select id from foo UNION select 0" and tried > to REFERENCE against this view, but that > doesnt work. > Can this problem be solved by a somebody ???? > > Thanks Why do you want to use zeros? A foreign key could be NULL. Regards, Tibor ltibor@mail.tiszanet.hu
Laszlo Tibor schrieb: > > On Wednesday, March 13, 2002 11:53 AM Behalf Of Andre Schubert wrote: > > > Hi to all, > > > > i have a simple problem and wont request assistance fro m this list. > > i have to tables > > > > foo: > > id int8 UNIQUE > > > > bar: > > id int8 UNIQUE > > foo_id int8 > > > > Now i wont foo_id to be a id which exists in the foo, this could be done > > with foo_id REFERENCES foo (id). > > But what should i do if i want foo_id to be a id existing in foo or to > > be zero(0). > > I have created a view as "select id from foo UNION select 0" and tried > > to REFERENCE against this view, but that > > doesnt work. > > Can this problem be solved by a somebody ???? > > > > Thanks > > Why do you want to use zeros? A foreign key could be NULL. Yes I know, but i need these Zeroes..... Thanks > > Regards, Tibor > ltibor@mail.tiszanet.hu > > ---------------------------(end of broadcast)--------------------------- > TIP 3: if posting/reading through Usenet, please send an appropriate > subscribe-nomail command to majordomo@postgresql.org so that your > message can get through to the mailing list cleanly
On Wed, 13 Mar 2002, Andre Schubert wrote: > Hi to all, > > i have a simple problem and wont request assistance fro m this list. > i have to tables > > foo: > id int8 UNIQUE > > bar: > id int8 UNIQUE > foo_id int8 > > Now i wont foo_id to be a id which exists in the foo, this could be done > with foo_id REFERENCES foo (id). > But what should i do if i want foo_id to be a id existing in foo or to > be zero(0). > I have created a view as "select id from foo UNION select 0" and tried > to REFERENCE against this view, but that > doesnt work. Correct, because you cannot currently reference a view. Currently you can't do that via just a references constraint, you'd need to make triggers that do the work of the checks. Why can't you reference a view? Well, the reason for that is that we'd need to be able to figure out how to do the referential action checks against the real tables referenced by the view. Even if we put triggers on all data changing operations on each of the tables it's not necessarily easy to work out what row(s) of the view are being changed by the operation. I don't think this is likely to be changed anytime soon.
Andre Schubert wrote: > Laszlo Tibor schrieb: > > > > On Wednesday, March 13, 2002 11:53 AM Behalf Of Andre Schubert wrote: > > > > > Hi to all, > > > > > > i have a simple problem and wont request assistance fro m this list. > > > i have to tables > > > > > > foo: > > > id int8 UNIQUE > > > > > > bar: > > > id int8 UNIQUE > > > foo_id int8 > > > > > > Now i wont foo_id to be a id which exists in the foo, this could be done > > > with foo_id REFERENCES foo (id). > > > But what should i do if i want foo_id to be a id existing in foo or to > > > be zero(0). > > > I have created a view as "select id from foo UNION select 0" and tried > > > to REFERENCE against this view, but that > > > doesnt work. > > > Can this problem be solved by a somebody ???? > > > > > > Thanks > > > > Why do you want to use zeros? A foreign key could be NULL. > > Yes I know, but i need these Zeroes..... Put a zero into foo or don't have zeroes in bar. You might be able to work around this with custom triggers, but that's not the real solution. It's clear that the guy designing your data model didn't understand the difference between zero and NULL. Fix that and your problemis solved. Jan -- #======================================================================# # It's easier to get forgiveness for being wrong than for being right. # # Let's break this rule - forgive me. # #================================================== JanWieck@Yahoo.com # _________________________________________________________ Do You Yahoo!? Get your free @yahoo.com address at http://mail.yahoo.com