Re: check constraint
От | erwan ancel |
---|---|
Тема | Re: check constraint |
Дата | |
Msg-id | 1054879158.3248.2.camel@brisedorient обсуждение исходный текст |
Ответ на | check constraint (erwan ancel <erwan.ancel@free.fr>) |
Список | pgsql-general |
Ok, thanks. I just did it with 3 triggers. And it seems to work well. I wanted to avoid this, but it seems to be the best solution. Le jeu 05/06/2003 à 23:22, Jan Wieck a écrit : > erwan ancel wrote: > > well, no... these are not direct foreign keys. The constraint here is > > that for a given record of D, B pointed by A pointed by the given D must > > be the same as B pointed by C pointed by the given D. > > > > This is not a foreign key, or foreign keys are much more than what I > > thought. > > Looks like a foreign key around the corner to me. Regular referential > integrity does not allow you to define that, unless you include the B > keys referenced in A and C into separate fields in D and build multi > column foreign keys (probably with ON UPDATE CASCADE). > > The problem arising from that is that you need to know the values ahead > or do a lookup and put them into D in a BEFORE trigger. > > Also I see problems arising if you later want to update A and/or C. I > haven't thought it through completely, maybe defining the constraints > deferred can help you out of that. > > > Jan > > > > > Erwan > > > > Le lun 02/06/2003 à 15:08, Bruno Wolff III a écrit : > >> On Mon, Jun 02, 2003 at 10:52:00 +0200, > >> erwan ancel <erwan.ancel@free.fr> wrote: > >> > Hi, > >> > I would like to know if it is possible to set "complex" constraints on > >> > databases such as: > >> > > >> > A->B means that in table A, each record references a record of table B > >> > (or NULL) > >> > > >> > so we have: > >> > > >> > A->B > >> > C->B > >> > D->C > >> > D->A > >> > constraint: for one record of D, D->A->B = D->C->B > >> > > >> > Hope it is clear enough. > >> > >> It looks like you are talking about foreign keys. Postgres has foreign key > >> constraints. You can look at the create table documentation to see how > >> to define them when creating a table. > >> > >> ---------------------------(end of broadcast)--------------------------- > >> TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org > >> > > > > > > ---------------------------(end of broadcast)--------------------------- > > TIP 5: Have you checked our extensive FAQ? > > > > http://www.postgresql.org/docs/faqs/FAQ.html > >
В списке pgsql-general по дате отправления: