|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
Firebird 3. Давно на просторах интернета встречал примеры, как можно довольно просто (но только с версии 2.1 или 2.5) логировать изменения полей конкретной записи централизовано. Т.е. сохранять в лог старое и новое значение. Да, можно записывать в таблицу изменения, обозначая каждое поле, но это неудобно + рутина, т.к. таблиц много, полей много, к тому же если нужно изменить/добавить/удалить поле... Просто хочется, не заботясь о названии таблицы и полей, скопипастить одинаковый код для триггеров нужных таблиц. Как получать название таблицы в триггере уже есть пример 6980844 Я помню, что данные записывались в текстовом виде в BLOB типа: Код: plaintext 1. 2. 3.
Может у кого есть примеры, идеи? Может у FB 3 уже есть возможность создать один единый триггер, который будет реагировать на все таблицы? Иначе если менять что-то по всем триггерам, то рутина много времени отнимает. А если нужно будет создать скрипты для обновления другой базы... ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2017, 17:38 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
30.11.2017 17:38, X11 пишет: > Я помню, что данные записывались в текстовом виде в BLOB типа: уху еть! дайте два! (С) зы: где ты это откопал? закопай обратно нах Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2017, 17:43 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
X11, напиши PSQL пакет утилит для автоматического формирования скрипта создания INSERT, UPDATE, DELETE триггеров и всё. И потом тупо пользуйся им ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2017, 17:45 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
X11Как получать название таблицы в триггере уже есть пример 6980844 1. создать один триггер на таблицы данных нельзя, никак. Для изменений DDL можно, но это другая тема. 2. с таким триггером как в "примере", вставка и обновление будет тормозить. 3. имя поля таким же способом получить будет можно, но бессмысленно, т.к. никак не привязать к new и old, даже через ES (там не будет этого контекста). ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2017, 18:52 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
kdv2. с таким триггером как в "примере", вставка и обновление будет тормозить. Особенно, если ещё и в параллельную БД записывать? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2017, 19:25 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
kdvникак не привязать к new и old В принципе, это и не надо. Старые данные будут видны в предыдущей записи. Т.е. пишет только текущие. Таким образом, можно в хранимой процедуре, если передать в неё имя таблицы, сделать как бы цикл по полям? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2017, 19:55 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
X11, 'Таблиц много, полей много"... получаем сверхмедленную (на изменения) базу, в основном загруженную логами... тут очень важно логировать изменение логов, чтобы никто не подчистил... ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2017, 21:09 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
Я имел ввиду, что не в одной транзакции много таблиц при добавлении. Много таблиц - это значит, что справочники разные, др. служебные таблицы. Но добавление происходит в одну таблицу, а не сразу в 10. Много таблиц + много полей - это много рутины при попытке подправить структуру, триггеры, процедуры. А было бы централизовано, было бы замечательно. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2017, 21:15 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
X11, в конце-концов, в IBE есть шаблоны таких триггеров. И есть тулза LogManager. Ну и, есть IBReplicator. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2017, 21:18 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
X11> Но добавление происходит в одну таблицу, а не сразу в 10. Блажен, кто верует. Триггеры и ХП вполне себе несколько таблиц меняют. > Много таблиц + много полей - это много рутины при > попытке подправить структуру, триггеры, процедуры. > А было бы централизовано, было бы замечательно. Конечно. Это ж работать надо. Гораздо приятнее было бы, чтобы оно "само". :) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2017, 21:24 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам... Конечно. Это ж... Некоторые просят протоколировать не только изменения, но и чтения. :) ... Самое прикольное, что тот, кто выкатил требование "все должно протоколироваться", при эксплуатации обычно оказывается вообще не при делах. Да и что потом с этими логами делать - непонятно. А если продукт "коробочный", то протокол уровня "кто поменял данные в табличке" смысла не имеет. Клиента обычно фик убедишь насчет необходимости хотя бы минимального администрирования, а тут - логи анализировать, "кто удалил накладную". Тут и в структуре базы разбираться нужно, и в бизнес-процессах. Вот протоколирование уровня "документ" - другое дело, даже порой полезно, но это уже совсем другой уровень технической реализации... ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2017, 22:08 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
чччД, согласен. Можно добавить галочку в настройках для включения/отключения протоколирования. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2017, 22:12 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам, да, оно само - так и должно быть. Что плохого в автоматизации? Ради этого всё и делается. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2017, 22:14 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
X11чччД, согласен. Можно добавить галочку в настройках для включения/отключения протоколирования. Объясни заказчику, что реализовать можешь. Но полноценная реализация (система фиксации изменений, система анализа логов, обучение персонала, объясни насчет разницы между физической и логической структурами...) потребует отдельного времени на реализацию, затем затруднит реализацию основной бизнес-логики, в разы увеличит потребность в дорогой быстрой (SSD же ж) дисковой памяти и гарантированно сделает систему медленной при работе под нагрузкой. Пусть принимает решение, что ему в первую очередь нужно - реализовать тотальную слежку или возможность формировать отчеты. Бронированный "Черный ящик" весом в 5 тонн vs всепогодный гарантированный лазерный уничтожитель человеков для МиГ-66. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2017, 22:22 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
Это всё отмазки. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2017, 22:23 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
X11Это всё отмазки. Да. Бессмысленную работу следует игнорировать, из-за всех сил. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2017, 22:24 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
Ну ладно. Может, будут идеи? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2017, 22:26 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
X11Ну ладно. Может, будут идеи? Напиши программку, генерирующую необходимую обвязку в базе и тексты триггеров для каждой таблички. Посмотри, как в IBExpert сделано: ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2017, 22:38 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
чччД> Некоторые просят протоколировать не только изменения, но и чтения. :) Подтверждаю. Буквально пару дней назад мне звонили, спрашивали - "а можно узнать, кто ДД.ММ.ГГ распечатал такой-то документ?" При том что, фактически, распечатать можно и мимо ПО вообще. > Самое прикольное, что тот, кто выкатил требование > "все должно протоколироваться", при эксплуатации > обычно оказывается вообще не при делах. Протоколирование тут ничем не выделяется, так почти со всеми требованиями, ибо их выкатывают чаще всего не те, кому придётся со всем этим работать, а их начальство (и это ещё хорошо, если непосредственное, а не через-через). А внизу люди, как правило, куда более адекватные - те хоть свою работу (рутину) ежедневную более-менее знают, звёздных планов не строят. > Да и что потом с этими логами делать - непонятно. Ты уж совсем-то не перегинай. Логи нужны, чтобы когда наступит "час Ха" найти виновного. И если логов не будет, виновного могут не искать, а "назначить" (может, даже не одного). В т.ч. могут выбрать кого-нибудь из ИТ. Правда, назначить могут даже при наличии логов, было бы желание. :) > протокол уровня "кто поменял данные в табличке" смысла не имеет. > Вот протоколирование уровня "документ" - другое дело, даже порой > полезно, но это уже совсем другой уровень технической реализации... А это одно и то же, юзеры/клиенты на таком уровне рассуждать не могут (тупо квалификации не хватает). Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2017, 22:41 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам, кстати, я еще IMHO добавлю, что логи надо из базы выгружать. Но так, чтобы можно было потом "найти негодяя". Просто с течением времени таблица логов станет охрененного размера, а бэкапить/ресторить все это добро все дольше и дольше. p.s. Типа, как КЛАДР в 1С. Грузится в базу, опционально, по мере добавления клиента из какого-то региона. Но клиент что-то купит один раз, а этот кусок КЛАДРа будет торчать в базе вечно. И там же запись не об одном адресе, а целиком по региону. Понятно что это не лог, но тоже полу-бесполезная в базе информация. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 00:38 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
kdv> кстати, я еще IMHO добавлю, что логи надо из базы выгружать. От размеров зависит и от того, что ты называешь "выгружать". Я не припомню случаев, когда нужно было более чем два года назад (2 календарных - текущий неоконченный и предыдущий). Соответственно, 01.01 - можно тупо очищать старые логи, они итак в старых бэкапах сохраняются. Касательно КЛАДР и пр. внешних источников - подгружать по ходу можно только если ПО - *клиентское* - работает с ними напрямую. Если нет - получаются всякие кривости. Да и не самая это большая проблема, тот же КЛАДР в БД не самый большой кусок. Ну если жмёт - ну можно вынести в отдельный kladr.fdb и обращаться через on external, но это сомнительная экономия, ИМХО. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 02:05 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
Гаджимурадов РустамчччД> Некоторые просят протоколировать не только изменения, но и чтения. :) Подтверждаю. Буквально пару дней назад мне звонили, спрашивали - "а можно узнать, кто ДД.ММ.ГГ распечатал такой-то документ?" При том что, фактически, распечатать можно и мимо ПО вообще. А у меня сделано протоколирование распечатки документов. Оказалось очень удобно. Запись в лог производится в момент отправки на печать из FastReport. В лог пишется: - дата-время - user - ip - id печатной формы - id документа Причем это оказалось настолько удобно что коичество распечаток по документу выводится прямо в журнале документов, а зайя в свойства документа видно и все остальные поля лога. К примеру если попытаться распечатать второй раз документ в виде "заказа на отгрузку" (для склада) - то выводится предупреждение что его уже печатали. Так же по бух. документам - видно печатали его или еще нет. Места занимает немного, торможений тоже не вызывает. Даже не стал делать опциональное отколючение логирования, логируется всегда. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 03:50 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
kdvГаджимурадов Рустам, кстати, я еще IMHO добавлю, что логи надо из базы выгружать. Но так, чтобы можно было потом "найти негодяя". Просто с течением времени таблица логов станет охрененного размера, а бэкапить/ресторить все это добро все дольше и дольше. У меня так и сделано :) Логи пишутся в рабочую базу, но есть механизм периодической выгрузки логов в специальную базу логов. В рабочей оставляю записи примерно за последний год, остальное выгружаю в архивную. В интерфейсе поиска по логам смотим по рабочей, при желании прямо оттуда же можно посмотреть и по архивной базе - программа сама коннектится к архивной. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 03:53 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
Очень полезным иногда был бы лог изменений в строках документов, и я даже его делал но потом отключил т.к. раздувает базу очень быстро, и лог получается больше самих данных, а в размере базы 90% составляют эти данные. Т.е. база раздуется в разы. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 03:55 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
Триггеры я пишу вручную. Делаю один триггер на все операции. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29.
Сам лог расчитан на логирование данных где первичный ключ таблицы имеет смысл в физическом мире и виден в интерфейсе. В первую очередь это справочники. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101.
Для некоторых случаев где нет доступного первичного ключа или он составной или он не имеет отношения к идентификации физического объекта - сделаны другие, специализированные таблицы и триггера логов. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 04:04 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
fraks, у тебя первичный ключ может меняться? Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 04:49 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
kdv, поэтому спасибо разработчикам за гетерогенные запросы - можно логи хранить в соседней базе. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 07:44 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
чччДfraks, у тебя первичный ключ может меняться? Код: sql 1.
Нет, не может. Но в жизни разное бывает, и не дело триггера логирования упрощать ситуацию. Его дело - записать в лог любое изменившееся поле, и ПК для него - просто частный случай поля. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 08:24 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
X11kdv, поэтому спасибо разработчикам за гетерогенные запросы - можно логи хранить в соседней базе. Я не пользуюсь возможностью через одну базу делать коннекты в другую. Просто из приложения коннекчусь куда надо отдельным коннектом. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 08:25 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
fraksif (inserting) then begin va = 'I'; vid_src = new.id; end else if (updating ) then begin va = 'U'; vid_src = old.id; end else if (deleting ) then begin va = 'D'; vid_src = old.id; end else begin va = '?'; vid_src = NULL; end -- может красивей использовать when then? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 09:26 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
X11, Логирование - все просто! Лог ведут триггеры after insert or update od delete на каждой таблице, которой нужно протоколирование текст триггеров генерится процедурой, которая обсасывает системные таблицы RDB$RELATION_FIELDS, RDB$FIELDS примерно в таком виде Код: plsql 1. 2. 3. 4. 5.
Еще существует процедурка (допустим DBA$INIT_LOG(RELATION_NAME varcar(13) character set UNICODE_FSS), которая вызывает предыдущую получает у нее текст триггера и в execute statement компилирует его. Она де грантит этому триггеру все необходимые права. При необходимости внести изменения в структуру таблицы делаем Код: plsql 1. 2. 3. 4. 5.
все. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 11:49 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
sonkz, т.е. на каждый insert/update генерируется каждый раз и пересоздается триггер? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 12:43 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
X11sonkz, т.е. на каждый insert/update генерируется каждый раз и пересоздается триггер? Да, на каждую таблицу, которой нужно протоколирование создается(или пересоздается) один триггер. Создание (или изменение) триггера происходит при вызове процедуры DBA$INIT_LOG ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 13:00 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
о нет, думаю, это существенно заменит добавление/изменение записи ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 13:47 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
X11о нет, думаю, это существенно заменит добавление/изменение записи По сравнению с чем? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 13:59 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
X11о нет, думаю, это существенно заменит добавление/изменение записи Замедлит? О какой записи идет речь? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 14:23 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
Много лет пользуюсь протоколированием от IBExpert, слегка доработал под свою задачу (доп. ключевые поля+индексы). Зачем лисапед изобретаете? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 14:32 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
чччД, по сравнению с тем, когда не нужно перекомпилировать/пересоздавать триггер каждый раз. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 14:33 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
sonkz, как о какой? О записи информации в базу. Триггер срабатывает когда в базу записывается информация. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 14:34 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
мастер_ёда, за тем, что я не для себя хочу реализовать, а для простого юзверя, который, может, с вилами на ПК кидается. Ему под капот не нужно лезть, а достаточно выбрать условия и нажать "Отобразить аудит действий пользователей". ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 14:36 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
01.12.2017 14:36, X11 пишет: > Ему под капот не нужно лезть, > а достаточно выбрать условия и нажать > "Отобразить аудит действий пользователей". и будет он сидеть и молча утирать скупую слезу. ибо хрен поймёт чо там к чему пришпилено... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 14:39 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
X11чччД, по сравнению с тем, когда не нужно перекомпилировать/пересоздавать триггер каждый раз. А "каждый раз" это когда? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 14:41 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
m7m, когда добавляется/меняется запись в таблице. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 14:54 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
X11m7m, когда добавляется/меняется запись в таблице.Пациент путает педали. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 14:55 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
X11m7m, когда добавляется/меняется запись в таблице. Или никто такое не утверждал, или я невнимательно читал ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 14:56 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
Логирование физических таблиц - это аудит низкого уровня, в котором не каждый ИТ-специалист разберётся, кроме того, что "вот этот тогда-то похоже что-то сделал". Потому что время, когда 1 таблица - "шапки", и ещё 1-2 - "Товары", "Платежи" для одного документа, уже давно прошли. Сейчас заполнишь одно поле в документе - и это вызывает изменения в 10-ке разных таблиц, часто неочевидных. Для отслеживания "когда, кто", по-моему, следует стремиться к прикладным объектам, и отслеживание это зачастую не на уровне СУБД, хотя часть (или всё) можно туда навесить. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 15:08 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
X11m7m, когда добавляется/меняется запись в таблице. Триггер, изменяется ТОЛЬКО когда изменяется таблица (метаданные), а все остальное время он молча пишет все изменения в ДАННЫХ в таблицы логов. Можно, заставить его заглядывать в настроечные таблицы, чтоб посмотреть поставил ли там юверь галочку - протоколировать, или не поставил для конкретного события( insert, update, delete или update каких полей он хочет протоколировать) Только тогда нужно еще протоколировать настройки протоколирования. А потом настройки протоколирования настроек протоколирования, и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 15:23 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
Тогда нужен триггер/событие, который будет определять, что структура целевой таблицы изменилась, например, добавилось поле или удалено поле. Чтобы сочинить новое тело триггера для логирования. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 15:27 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
мастер_ёдаМного лет пользуюсь протоколированием от IBExpert, слегка доработал под свою задачу (доп. ключевые поля+индексы). Зачем лисапед изобретаете? У меня все это работало еще до того, как IBExpert научился. Во какой я старый! http://www.sql.ru/forum/images/cry.gif ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 15:29 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
X11Тогда нужен триггер/событие, который будет определять, что структура целевой таблицы изменилась, например, добавилось поле или удалено поле. Чтобы сочинить новое тело триггера для логирования. Есть такой триггер - называется разработчик БД! ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 15:30 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
X11Тогда нужен триггер/событие, который будет определять, что структура целевой таблицы изменилась, например, добавилось поле или удалено поле. Чтобы сочинить новое тело триггера для логирования. DDL триггеры в 3.0 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 15:38 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
Симонов Денис, да, надо покурить эту тему. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 15:40 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
X11да, надо покурить эту тему. В трезвом состоянии - не советую, это очень неприятная трава. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 15:45 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
X11Тогда нужен триггер/событие, который будет определять, что структура целевой таблицы изменилась, например, добавилось поле или удалено поле. Чтобы сочинить новое тело триггера для логирования. Это уже дичайший гон. У тебя что, сами собой структуры таблиц меняются? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 15:47 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
X11, ты, конечно же, знаешь о том, что объекты в БД могут быть зависимыми. К примеру, ты не сможешь удалить поле в табличке, если это поле явно используется в процедуре или в триггере. Не даст тебе СУБД. Т.е, "просто так" менять структуру табличек не получится. Только предварительно "загасив" все зависимости. Сие часто делается с помощью специально сгенерированного специальными инструментами специального скрипта. Во время генерации которого вполне можешь заодно и синхронизировать твои триггеры. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 15:55 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, тогда нужно так, как я хотел изначально. Просто в цикле по полям записывать всё в BLOB поле=значение ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 15:56 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
чччД, если программа применяет скрипт обновления структуры базы. Не обязательно программа/база в единственном экземпляре. Есть же и коробочное ПО. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 15:57 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
чччД, про зависимости знаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 15:58 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
X11, вот именно насчёт коробочного. Неужели у тебя пользователи самовольно, минуя твои инструменты, имеют право корежить структуру базы? Если все же "да", то пусть у них голова о логировать и болит, раз такие ушлые. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 16:04 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
X11Симонов Денис, да, надо покурить эту тему. Если ты хочешь на лету менять из одного триггера другие - лучше не рассказывай здесь об этом. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 16:13 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
чччД, нет конечно. Но оповестить систему что нужный нам триггер требует пересборки/перекомпиляции можно. Я делал PSQL пакет который автоматически генерирует скрипты для логирующих триггеров (но не выполняет их). Он использует таблицу в которой хранится какие таблицы надо логировать. Так вот DDL триггер может сделать пометку в этой таблице, что триггер надо пересоздать. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 16:21 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
чччДНеужели у тебя пользователи самовольно, минуя твои инструменты, имеют право корежить структуру базы? нет, но если устанавливается обновление... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 16:25 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
Симонов Денис прав. Создание / изменениетермометров тренерами, это без бутылки тяжело... На какое событие писать триммеры? А если оно не наступит? Например, не дропнешь и не изменишь поле если оно используется в триггерах ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 16:30 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
Извините, с телефона пишу ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 16:32 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
Вопрос касается производительности. Есть 3 основных типа события: добавление, удаление, изменение. Как лучше их хранить в базе? В виде текстового поля или целого числа? С тем учетом, что на клиенте тоже нужно выводить пользователю на экран/экспорт/печать в понятном виде, а не в виде числа или слова "INS/UPD/DEL"? Может так и хранить: "Добавление/Изменение/Удаление"? Зато на клиенте не придётся ничего "конвертировать". С др. стороны вместо числа можно легко подставить значок из ImageList. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 16:38 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
X11, Сначала надо курить хранение и отображение данных. Потом что-нибудь Про реляционные базы. Потом задавать вопросы. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 16:44 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
X11Просто в цикле по полям записывать всё в BLOB поле=значениеЭто похоже не лечится... пациент упорно целится себе в ногу. Представь блоб на пару десятков гиг с такими парами значений. Ты ж утонешь на его анализе. Блин, имея под рукой СУБД пихать все в блоб как минимум глупо. Блоб это некая неделимая сущность, ну картинка или видеоролик. Автору читать букварь про нормализацию и самый первый шаг, распределение сущностей по полям таблиц. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 16:53 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
Ivan_Pisarevsky Представь блоб на пару десятков гиг с такими парами значений. Ты ж утонешь на его анализе. Да ладно... Все еще до анализа умрет, на добавлении очередных записей протокола в блоб :) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 16:59 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
Что-то вроде такого (это грубо в blob) тело процедуры Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Примерно такое я где-то давно видел, как писал ранее. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 17:02 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
Ivan_PisarevskyТы ж утонешь на его анализе анализ заключается в том, чтобы найти найти в логе по ID нужный объект и посмотреть значения полей Код: plaintext 1. 2.
вот я и пытаюсь сделать какой-нибудь приемлемый формат. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 17:05 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
X11вот я и пытаюсь сделать какой-нибудь приемлемый формат. А просто посмотреть, как в том же эксперте это сделано, и допилить под себя - не судьба? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 17:07 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
01.12.2017 17:07, IBExpert пишет: > А просто посмотреть, как в том же эксперте это сделано, и допилить под себя - не судьба? не взлетит. тут программист нужен (С) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 17:10 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
Мимопроходящий, бе-бе-бе ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 17:19 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
Мимопроходящий, Я еще в начале страницы это сказал.Для БД разработчик нужен. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 17:22 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
X11Ivan_PisarevskyТы ж утонешь на его анализе анализ заключается в том, чтобы найти найти в логе по ID нужный объект и посмотреть значения полей Код: plaintext 1. 2.
вот я и пытаюсь сделать какой-нибудь приемлемый формат. Можно так: Код: sql 1. 2. 3.
#13 в качестве перевода строки. Если в StrValue есть двойные кавычки, то задвоить их. Если значение пустое, то это null. При апдейте писать старые значения вроде не нужно, т.к. они есть в предыдущих записях лога. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 17:22 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
_NickDeeПри апдейте писать старые значения вроде не нужно, т.к. они есть в предыдущих записях лога. да, это я упоминал ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 17:28 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
X11, не пытайся съесть утюг. Хранение записи в виде блобов это обрыв ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 17:31 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
IBExpertX11вот я и пытаюсь сделать какой-нибудь приемлемый формат. А просто посмотреть, как в том же эксперте это сделано, и допилить под себя - не судьба? Вижу, что есть заголовок и тело, а где подсмотреть, как записываются туда данные? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 17:32 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
X11, так он сам туда пишет. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 17:42 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
X11Вижу, что есть заголовок и тело, а где подсмотреть, как записываются туда данные? Не туда смотришь. Менеджер протоколов данных живет в меню Инструменты. Данные записываются триггерами. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 17:53 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
fraks> А у меня сделано протоколирование распечатки документов. fraks> Запись в лог производится в момент отправки на печать из FastReport. Можно-то можно, можно даже очень удобно. Но ведь эти "документы" вполне можно и мимо отчетника распечатать, особенно если форма простая (реестры всякие итп). Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2017, 18:19 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустамfraks> А у меня сделано протоколирование распечатки документов. fraks> Запись в лог производится в момент отправки на печать из FastReport. Можно-то можно, можно даже очень удобно. Но ведь эти "документы" вполне можно и мимо отчетника распечатать, особенно если форма простая (реестры всякие итп). Это ничего не меняет. Подделать можно все, если оно того стОит. Можно подделать и подпись и печать. Но у нас 100% распечаток делается только через предусмотренный для этого софт. Кроме того, даже не при 100% достоверности, эта информация полезна в реальной практике. Не забыл ли менеджер распечатать счет-фактуру, сколько экземпляров. С какого компа и кто ее печатал. КОГДА. Так же интересен факт отсутствия распечатки. Если заказ на отгрузку не распечатывался - то склад по любому этот отбор не начинал собирать. Если распечатывался - то печатать второй раз один и тот же документ - чревато повторным сбором одного и того же документа. Если печатались наклейки - то когда, и как это соотносится с другими распечатками. Если бухгалтера не могут найти бумажный документ - смотрим когда он распечатывался. Если никогда - то и искать нечего :) и.т.п. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2017, 03:57 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
fraks> Кроме того, даже не при 100% достоверности, fraks> эта информация полезна в реальной практике. C этим я нисколько не спорю. Всему/многому можно найти полезное применение. Просто это не панацея и не универсальное решение, особенно для всяких орг.выводов и наказаний. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2017, 18:14 |
|
Логирование изменений записи
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустамfraks> Кроме того, даже не при 100% достоверности, fraks> эта информация полезна в реальной практике. C этим я нисколько не спорю. Всему/многому можно найти полезное применение. Просто это не панацея и не универсальное решение, особенно для всяких орг.выводов и наказаний. До меня не доходит идея аргументов. "Не панацея и не универсальное" - и поэтому что? не иметь таких логов? А что панацея для орг.выводов? IMHO как раз этот лог и есть основание для орг. выводов. Почему поздно собрали отбор? Склад: - поздно принесли документ. Менеджер: - я отдал еще утром. Начальник: - смотрим лог, документ распечатан после обеда, значит: - про распечатку еще утром - враньё - склад не виноват. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2017, 03:51 |
|
|
start [/forum/topic.php?all=1&fid=40&tid=1561312]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
35ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
84ms |
get tp. blocked users: |
1ms |
others: | 307ms |
total: | 465ms |
0 / 0 |