Re: Re: [pgsql-ru-general] Номер правки записи
От | Dmitry E. Oboukhov |
---|---|
Тема | Re: Re: [pgsql-ru-general] Номер правки записи |
Дата | |
Msg-id | 20150608171335.GW19139@vdsl.uvw.ru обсуждение исходный текст |
Ответ на | Re: [pgsql-ru-general] Номер правки записи (Warstone@list.ru <warstone@list.ru>) |
Список | pgsql-ru-general |
> Вообще-то триггер подойдет. Есть триггеры на апдейт и там вам пойдет version = > OLD.version + 1; Можно еще покопать в сторону RULE, но надо сразу предупредить, > что RULE пользовать **НЕ НАДО** (Уже где-то с 5 версий идет разговор о том, что > надо RULE выпилить, но все как-то нет). а можно пример триггера, а то я тут не понимаю вообще. есть табличка ( id: SERIAL, field: TEXT, version: INTEGER ) Нужно написать триггер который будет на каждый UPDATE table SET field = 'bla' WHERE id = 123; делать инкремент version попутно. я примерно понимаю как INSTEAD OF триггер на UPDATE тут написать, но в INSTEAD OF триггере придется всегда перечислять ВСЕ поля в записях. то есть для таблички из 100 столбиков это меганакладно + придется всякий ALTER TABLE делать и ALTER TRIGGER > Понедельник, 8 июня 2015, 14:49 +03:00 от "Dmitry E. Oboukhov" > <unera@debian.org>: > Есть табличка > orders: id, col1, col2, ... > И есть код в виде n клиентов, находящийся в разных репозитариях > которые эту табличку модифицируют > каждый модифицирует что-то свое вроде > UPDATE > orders > SET > col1 = bla > WHERE > id = 123 > Далее хочется подвести статистику сколько раз в среднем каждый order > за период своей жизни модифицируется. > Для этого вводим столбик: > ALTER TABLE orders ADD COLUMN "version" INTEGER NOT NULL DEFAULT 0; > И далее надо пройтись по всем запросам UPDATE и расставить в SET > , version = version + 1 > Все вроде просто, но после того как статистика будет снята это все > хочется обратно убрать итп. > то есть код на несколько недель. > вопрос а как эту задачу решить средствами БД? > то есть решить так чтобы не увеличивать нагрузку? > добавление оператора в SET считаем что нагрузку не увеличивает. > а дополнительный запрос увеличивает. > триггеры тут вроде не подходят (потому что модифицируется та же > запись, на которой триггер, плюс нагрузка) > что еще можно придумать? > -- > . ''`. 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 -- . ''`. 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 по дате отправления: