![]() |
|
Модераторы: skyboy |
![]()
|
|
| ArsNov |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 148 Регистрация: 1.9.2005 Репутация: нет Всего: 1 |
Только начинаю изучать триггеры. Мне надо сделать триггеры которые регистрировали бы все изменения в базе данных(записывали бы в отдельную таблицу всю инфу по запросам).
Как мне например сделать триггер который реагировал бы на все insert в базе и записывал бы в какой таблице произошел инсерт и в какое время? Как можно узнать в какую таблицу добавилась запись? |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 41 Всего: 260 |
бинарные логи не устраивают?
|
|||
|
||||
| ArsNov |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 148 Регистрация: 1.9.2005 Репутация: нет Всего: 1 |
нет, уже не устраивают. Я создавал тут тему по бинарным логам. Я не знаю каким образом их анализировать. И управлять ими я не могу, разрастутся, не понятно как с ними работать, чистить. Мне нужно самому написать систему, которая будет отслеживать все изменения.
Вот и хочу написать триггеры, которые будут все регистрировать а потом в нужный момент написанная программа будет анализировать и работать с этой инфой так, как мне нужно. Хочу создать отдельную таблицу, где все будет фиксироваться. Но так как я триггеры только начинаю изучать, у меня возник такой вопрос, как определять в какую таблицу произошел инсерт? Хочется написать 3 триггера на всю базу, для инсерта, апдейта и делита. Но пака не знаю как...?! Пока выходит только для каждой таблицы свои триггеры... Это сообщение отредактировал(а) ArsNov - 25.10.2007, 11:00 |
|||
|
||||
| sTa1kEr |
|
|||
|
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 7 Всего: 146 |
Никак, в MySQL триггеры вешаются исключительно на таблицу. Т.ч. либо создавать по 3 триггера на каждую таблицу, либо использовать другой метод. |
|||
|
||||
| ArsNov |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 148 Регистрация: 1.9.2005 Репутация: нет Всего: 1 |
Спасибо сталкер, я уже понял это. Но я придумал как можно мою задачу решить с помощью доп таблиц, скриптиков на php и триггеров. Если кому интересно могу написать о задуманном. А когда реализую, расскажу чту вышло. А какие способы еще можно придумать? Бинлоги ковырять, как это сделать?
|
|||
|
||||
| Kesh |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2488 Регистрация: 31.7.2002 Где: Германия, Saarbrü cken Репутация: 15 Всего: 54 |
Я бы реализовал это проще...
Вместо mysql_query используется своя собственная функция mysql_qry, в которой можно вызывать само действие + записывать какую угодно информацию куда угодно и вообще вести любые действия касательно базы данных... -------------------- ![]() |
|||
|
||||
| ArsNov |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 148 Регистрация: 1.9.2005 Репутация: нет Всего: 1 |
kesh спасибо за предложение. Мне такой вариант предлагали неоднократно, но есть 2 причины по которым я не могу использовать такие функции:
- Данные редактируются через софт который писал не я (DBAcenral, ems mysql manager ) и я не могу заставить их работать с моими функциями. - Если отказаться от этих программ и написать свою, то придётся использовать только её, иначе можно накосячить и потом долго исправлять а это не удобно. А еще мне предлагали ввести в таблицах доп поля, которые хранили бы даты изменения строки. Но и этот вариант не катит, т.к. мне надо еще и регистрировать удаленные записи. Пока я остановился на том, что надо писать скрипты, которые генерировали бы для базы доп. таблицы (таблицы всех изменений для всех таблиц. Т.о. у меня на каждую таблицу с информацией приходится одна таблица логов) и соответственно генерировали бы триггеры, которые осуществят занесение инфы в эти доп таблицы. Это сообщение отредактировал(а) ArsNov - 25.10.2007, 15:06 |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MySQL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |