Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Триггеры 
:(
    Опции темы
ArsNov
Дата 25.10.2007, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 148
Регистрация: 1.9.2005

Репутация: нет
Всего: 1



Только начинаю изучать триггеры. Мне надо сделать триггеры которые регистрировали бы все изменения в базе данных(записывали бы в отдельную таблицу всю инфу по запросам).
Как мне например сделать триггер который реагировал бы на все insert в базе и записывал бы в какой таблице произошел инсерт и в какое время? Как можно узнать в какую таблицу добавилась запись?
PM MAIL ICQ   Вверх
skyboy
Дата 25.10.2007, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 41
Всего: 260



бинарные логи не устраивают?
PM MAIL   Вверх
ArsNov
Дата 25.10.2007, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 148
Регистрация: 1.9.2005

Репутация: нет
Всего: 1



нет, уже не устраивают. Я создавал тут тему по бинарным логам. Я не знаю каким образом их анализировать. И управлять ими я не могу, разрастутся, не понятно как с ними работать, чистить. Мне нужно самому написать систему, которая будет отслеживать все изменения.
Вот и хочу написать триггеры, которые будут все регистрировать а потом в нужный момент написанная программа будет анализировать и работать с этой инфой так, как мне нужно. Хочу создать отдельную таблицу, где все будет фиксироваться.
Но так как я триггеры только начинаю изучать, у меня возник такой вопрос, как определять в какую таблицу произошел инсерт? Хочется написать 3 триггера на всю базу, для инсерта, апдейта и делита. Но пака не знаю как...?! Пока выходит только для каждой таблицы свои триггеры...


Это сообщение отредактировал(а) ArsNov - 25.10.2007, 11:00
PM MAIL ICQ   Вверх
sTa1kEr
Дата 25.10.2007, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 7
Всего: 146



Цитата(ArsNov @  25.10.2007,  11:59 Найти цитируемый пост)
Но так как я триггеры только начинаю изучать, у меня возник такой вопрос, как определять в какую таблицу произошел инсерт? Хочется написать 3 триггера на всю базу, для инсерта, апдейта и делита. 

Никак, в MySQL триггеры вешаются исключительно на таблицу. Т.ч. либо создавать по 3 триггера на каждую таблицу, либо использовать другой метод.
PM MAIL   Вверх
ArsNov
Дата 25.10.2007, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 148
Регистрация: 1.9.2005

Репутация: нет
Всего: 1



Спасибо сталкер, я уже понял это. Но я придумал как можно мою задачу решить с помощью доп таблиц,  скриптиков на php и триггеров. Если кому интересно могу написать о задуманном. А когда реализую, расскажу чту вышло. А какие способы еще можно придумать? Бинлоги ковырять, как это сделать? 

PM MAIL ICQ   Вверх
Kesh
Дата 25.10.2007, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken

Репутация: 15
Всего: 54



Я бы реализовал это проще...
Вместо mysql_query используется своя собственная функция mysql_qry, в которой можно вызывать само действие + записывать какую угодно информацию куда угодно и вообще вести любые действия касательно базы данных...


--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
ArsNov
Дата 25.10.2007, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 148
Регистрация: 1.9.2005

Репутация: нет
Всего: 1



kesh спасибо за предложение. Мне такой вариант предлагали неоднократно, но есть 2 причины по которым я не могу использовать такие функции:
- Данные редактируются через софт который писал не я (DBAcenral, ems mysql manager )  и я не могу заставить их работать с моими функциями.
- Если отказаться от этих программ и написать свою, то придётся использовать только её, иначе можно накосячить и потом долго исправлять а это не удобно.
А еще мне предлагали ввести в таблицах доп поля, которые хранили бы даты изменения строки. Но и этот вариант не катит, т.к. мне надо еще и регистрировать удаленные записи.

Пока я остановился на том, что надо писать скрипты, которые генерировали бы для базы доп. таблицы (таблицы всех изменений для всех таблиц. Т.о. у меня на каждую таблицу с информацией приходится одна таблица логов) и соответственно генерировали бы триггеры, которые осуществят занесение инфы в эти доп таблицы.  smile 

Это сообщение отредактировал(а) ArsNov - 25.10.2007, 15:06
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0463 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.