Re: Problem with n to n relation
От | Janning Vygen |
---|---|
Тема | Re: Problem with n to n relation |
Дата | |
Msg-id | 0110081917050A.21592@janning обсуждение исходный текст |
Ответ на | Re: Problem with n to n relation (Stephan Szabo <sszabo@megazone23.bigpanda.com>) |
Ответы |
Re: Problem with n to n relation
|
Список | pgsql-sql |
Am Montag, 8. Oktober 2001 18:09 schrieb Stephan Szabo: > On Mon, 8 Oct 2001, Janning Vygen wrote: > > > but how do i reach my goal. It should not be allowed to have a > > person without any address?? > > Hmm, do you always have at least one known address at the time > you're inserting the person? > > I can think of a few somewhat complicated ways. Person getting a > column that references person2adress with initially deferred, the > problem here is that you don't know one of the tables' serial > values unless you're selecting it yourself which would mean you'd > have to change how you were getting your incrementing numbers > (getting currval of some sequence presumably and using that to > insert into person2adress). yeah, thats a way which works. dont know if its cool to do it like this, but you cant insert a person without any address. so you are forced to use a transaction. create table person ( id serial, name text ); create table address ( id serial, street text NOT NULL ); create table person2address ( id int4, address_id int4 NOT NULL REFERENCES address (id), person_id int4 NOT NULLREFERENCES person (id) ); ALTER TABLE person ADD CONSTRAINT person_has_adress FOREIGN KEY (id) REFERENCES person2address(id) DEFERRABLE INITIALLY DEFERRED; begin; insert into person (name) values ('janning'); insert into address (street) values ('Sesamestreet'); insert into person2address values(1,1,1); commit; > You could probably also make your own deferred constraint trigger > (although I'm not sure that it's documented since I don't think it > was really meant as a user feature) which does the check at the end > of any transaction in which rows were inserted into person. > > > > At 12:39 PM 10/5/2001 +0200, Janning Vygen wrote: > > > >create table person ( > > > > id serial, > > > > name text > > > >); > > > > > > > >create table address ( > > > > id serial, > > > > street text > > > > ... > > > >); > > > > > > > >create table person2adress ( > > > > id serial, > > > > person_id integer not null references person(id), > > > > address_id integer not null references address(id), > > > >); > > > > -- Planwerk 6 /websolutions Herzogstra�e 86 40215 D�sseldorf fon 0211-6015919 fax 0211-6015917 http://www.planwerk6.de
В списке pgsql-sql по дате отправления: