Rule'ы и ссылки на другие таблицы
От | Dmitry E. Oboukhov |
---|---|
Тема | Rule'ы и ссылки на другие таблицы |
Дата | |
Msg-id | 20110919075054.GB14612@apache.rbscorp.ru обсуждение исходный текст |
Список | pgsql-ru-general |
Имеем табличку users: | user_id | какие-то поля | Далее имеем табличку событий events: | event_id | user_id REFERENCES users ("id") | time | какие-то поля | То есть события поступают и записываются со ссылками на пользователя с текущим временем. теперь чтобы выбрать все события 25-го пользователя надо сказать SELECT * FROM events WHERE user_id = 25; А чтобы выбрать последнее событие 25-го пользователя надо сказать SELECT * FROM events WHERE id = 25 ORDER BY time DESC LIMIT 1; Далее потребовалось выводить список пользователей в одной колонке, список последних их событий в другой. Поскольку получаются подзапросы, то хочется завести табличку last_events: | user_id REFERENCES "users" ("user_id") | event_id REFERENCES "events" ("event_id") | Теперь хочется чтобы эту табличку правила сама база. CREATE RULE "event_insert" AS ON INSERT TO "events" DO ALSO UPDATE "last_events" SET "event_id" = NEW."event_id" WHERE "user_id" = NEW."user_id"; Вот, а тепрерь если попробовать добавить запись в events то получаем исключение о том что поскольку event_id еще некорректный (транзакция еще незавершена), то и стало быть запись не проходит. Вопрос: как можно средствами БД заполнять табличку last_events? -- . ''`. Dmitry E. Oboukhov : :’ : email: unera@debian.org jabber://UNera@uvw.ru `. `~’ GPGKey: 1024D / F8E26537 2006-11-21 `- 1B23 D4F8 8EC0 D902 0555 E438 AB8C 00CF F8E2 6537
Вложения
В списке pgsql-ru-general по дате отправления: