Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
16.01.2008, 09:55
|
|||
|---|---|---|---|
|
|||
История действий пользователей |
|||
|
#18+
Необходимо решить такую задачу: есть таблица над которой пользователи совершают 3 вида возможных операций (вставка, обновление, удаление записи). Необходимо обеспесить ведение истории действий пользователей (кто, что и когда сделал) для возможности контроля и отката действий пользователя. Есть ли красивое и простое решение такой задачи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.01.2008, 10:26
|
|||
|---|---|---|---|
|
|||
История действий пользователей |
|||
|
#18+
Триггеры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.01.2008, 10:47
|
|||
|---|---|---|---|
|
|||
История действий пользователей |
|||
|
#18+
я понимаю что без триггеров не обойдешься. Как организовать структуру? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.01.2008, 11:24
|
|||
|---|---|---|---|
|
|||
История действий пользователей |
|||
|
#18+
Rust()я понимаю что без триггеров не обойдешься. Как организовать структуру? Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.01.2008, 11:34
|
|||
|---|---|---|---|
|
|||
История действий пользователей |
|||
|
#18+
В 9.5 можно аудит настроить и он будет фиксировать все запросы и параметры которые выполнял пользователь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.01.2008, 13:02
|
|||
|---|---|---|---|
|
|||
История действий пользователей |
|||
|
#18+
Спасибо за ответы, приму к сведению. Но есть еще проблемка: в таблицу истории необходимо еще фиксировать ip адрес машины пользователя, который вытаскивается в приложении. То есть такая ситуация: приложение знает ip адрес и пытается вызвать sql запрос (действие пользователя). В итоге, в таблице истории должна быть информация что сделал пользователь и с какой машины. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.01.2008, 13:13
|
|||
|---|---|---|---|
|
|||
История действий пользователей |
|||
|
#18+
Rust()Спасибо за ответы, приму к сведению. Но есть еще проблемка: в таблицу истории необходимо еще фиксировать ip адрес машины пользователя, который вытаскивается в приложении. То есть такая ситуация: приложение знает ip адрес и пытается вызвать sql запрос (действие пользователя). В итоге, в таблице истории должна быть информация что сделал пользователь и с какой машины. Почему не использовать, например, хранимую? Свои тараканы , понятно, но зато можно писать в журнал всё, что надо. В этом случае триггеры не нужны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.01.2008, 14:06
|
|||
|---|---|---|---|
|
|||
История действий пользователей |
|||
|
#18+
то есть в таком случае без триггеров решается? Не красиво. А возможно ли в пределах одной транзакции сначала записать ip адрес в таблицу истории, а затем триггерным способом дописать в историю изменения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.01.2008, 16:21
|
|||
|---|---|---|---|
|
|||
История действий пользователей |
|||
|
#18+
Rust()то есть в таком случае без триггеров решается? Не красиво. А возможно ли в пределах одной транзакции сначала записать ip адрес в таблицу истории, а затем триггерным способом дописать в историю изменения? Как и мой вариант (я же говорил, свои тараканы в этом способе), Ваш также некрасив, увы, поскольку имеет разнесенные операции по формированию журнала. Теоретически (не пробовал) можно в основной таблице завести "лишнее" поле, которое будет содержать ip пользователя, который эту запись модифицировал, вставил, удалил последним ;) Избыточность, но функционал соответствует Вашему описанию задачи. В этом случае триггер сработает и запишет всё как надо, в том числе текущее значение ip пользователя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.01.2008, 17:23
|
|||
|---|---|---|---|
|
|||
История действий пользователей |
|||
|
#18+
Rust()Спасибо за ответы, приму к сведению. Но есть еще проблемка: в таблицу истории необходимо еще фиксировать ip адрес машины пользователя, который вытаскивается в приложении. То есть такая ситуация: приложение знает ip адрес и пытается вызвать sql запрос (действие пользователя). В итоге, в таблице истории должна быть информация что сделал пользователь и с какой машины.См. application_id() . Если у вас не трехзвенка, то используйте в триггере напрямую. Она возвращает вот что. Если ваше приложение лучше знает ip адрес (трехзвенка), то можно так: 1. Создайте таблицу ip(appl_id varchar(128) not null primary key, ip ...) 2. После connect: insert into ip values (application_id(), <ip>) 3. В триггере используйте ее: insert into hist_t select USER, CURRENT TIMESTAMP, 'I' , (select ip from ip where appl_id=application_id()) as ip , n.* from n 4. В конце работы delete from ip where appl_id=application_id() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.01.2008, 12:24
|
|||
|---|---|---|---|
|
|||
История действий пользователей |
|||
|
#18+
вот это то что нужно, спасибо за помощь!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.01.2008, 13:05
|
|||
|---|---|---|---|
|
|||
История действий пользователей |
|||
|
#18+
выяснилась особенность: функция application_id() возвращает идентификатор приложения текущего соединения с базой. А если все пользователи соединяются с базой под одним пользователем и соединение берется из пула. то этот идентификатор может быть одинаковым для различных пользвателей. Нет ли фунции получения идентификатора сесси текущего соединения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=43&mobile=1&tid=1604102]: |
0ms |
get settings: |
8ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
55ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 215ms |
| total: | 355ms |

| 0 / 0 |
