Re: [ADMIN] Foreign key
От | Stephan Szabo |
---|---|
Тема | Re: [ADMIN] Foreign key |
Дата | |
Msg-id | Pine.BSF.4.10.10010031011330.20147-100000@megazone23.bigpanda.com обсуждение исходный текст |
Ответ на | Foreign key ("Paulo Roberto Siqueira" <paulo.siqueira@usa.net>) |
Список | pgsql-novice |
On Tue, 3 Oct 2000, Paulo Roberto Siqueira wrote: > This list have helped me a lot. That's why I'm here again asking for more > information. > I've read all the documentation, but I need more information on how > postgres implements foreign key on version 7.0.2. I know it uses triggers. > More information is needed though. I want to know the mechanism, when it > will change to real foreign key etc. The mechanics are that a foreign key constraint definition is turned into three constraint triggers (more on this in a second), one on the foreign key table, two on the primary key table. The one on the foreign key table is an after update/insert trigger that checks that the row matches. The two on the primary key table are after delete and update (respectively) and either implement a check to make sure the row isn't referenced (no action/restrict) or implement the referential action (on delete ... on cascade ...) The checks and actions are all implemented in C using SPI by building appropriate queries. Constraint triggers are a little different from normal triggers because there is some additional stuff to handle the relationship between the tables and a deferred trigger queue to handle deferrable constraints. I'm not sure what you mean by real foreign key above, so I'm not sure how to answer the last bit.
В списке pgsql-novice по дате отправления: