From: | Jerome Alet <alet(at)librelogiciel(dot)com> |
---|---|
To: | pgsql-sql(at)postgresql(dot)org |
Subject: | avoid circular references |
Date: | 2003-11-05 21:40:41 |
Message-ID: | 20031105214041.GC13937@mail.librelogiciel.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
Hi there,
I've got a table 'objtable' of objects which primary id is 'idobj' of type
serial.
objtable :
idobj objname
1 nameone
2 nametwo
3 namethree
...
Each object can contain one or many other objects from the same
table, so I guess this relationship can be expressed with something
like :
CREATE TABLE contains (id SERIAL PRIMARY KEY NOT NULL,
containerid INTEGER REFERENCES objtable(idobj),
contentid INTEGER REFERENCES objtable(idobj) );
What I would like is to be able to avoid circular references :
- an object can't contain itself.
- an object can't contain one of its containers.
So I'd like to know how to create additionnal integrity constraints
to solve this problem, and especially what syntax I should use.
I thought about creating a rule but maybe the best is a trigger
(I'm not sure I really understand the difference) if I see
what happens when I create new tables. But what can I do in
my trigger to have PostgreSQL understand there's an integrity
violation ?
Thanks in advance for any help on this.
Jerome Alet
--
"A non-free program is a predatory social system that keeps people
in a state of domination and division, and uses the spoils to
dominate more." - RMS
From | Date | Subject | |
---|---|---|---|
Next Message | Josh Berkus | 2003-11-05 21:58:34 | Re: Schema boggle... |
Previous Message | Jeff Eckermann | 2003-11-05 19:54:24 | Re: Select and functions |