Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Логи редактирования таблиц
 
 автор: Eugene77   (06.02.2010 в 12:54)   письмо автору
 
 

Есть несколько таблиц, которые доступны для редактирования через интерфейс всем зарегистрированым посетителям.
Однако содержимое таблиц критично для работы сайта (если в таблицах будут ошибки, то сайт не будет работать правильно)

Как
проще вести логи исправлений этих таблиц, чтобы потом легко можно было откатить исправления внесённые тем или иным посетителем, отталкиваясь от его ID и даты?

Хотелось бы решение в рамках MySQL. На триггерах, например.
Трудность в том, что если для каждой из 5 таблиц писать по 3 триггера (INSERT, UPDATE, DELETE), то получается работы на неделю.
Возможно ли написать три универсальных триггера для логирования любых таблиц?

  Ответить  
 
 автор: Trianon   (06.02.2010 в 13:17)   письмо автору
 
   для: Eugene77   (06.02.2010 в 12:54)
 

>Есть несколько таблиц, которые доступны для редактирования через интерфейс всем зарегистрированым посетителям.
>Однако содержимое таблиц критично для работы сайта (если в таблицах будут ошибки, то сайт не будет работать правильно)
>
>Как
>проще вести логи исправлений этих таблиц, чтобы потом легко можно было откатить исправления внесённые тем или иным посетителем, отталкиваясь от его ID и даты?

Как вести логи, или как проще вести логи?


>Хотелось бы решение в рамках MySQL. На триггерах, например.

У Вас есть хоть какое-то решение, чтобы можно было говорить об оптимизации, или нет никакого?

>Трудность в том, что если для каждой из 5 таблиц писать по 3 триггера (INSERT, UPDATE, DELETE), то получается работы на неделю.

А в чем принципиальная проблема?

>Возможно ли написать три универсальных триггера для логирования любых таблиц?

То есть триггеры для конкретной таблицы Вы уже написали?

Лентяй.

  Ответить  
 
 автор: Eugene77   (06.02.2010 в 13:43)   письмо автору
 
   для: Trianon   (06.02.2010 в 13:17)
 

Я впервые сталкиваюсь с задачей отката сделанных кем-то исправлений.
И не могу пока сориентироваться с какой стороны к ней подступаться-то, чтобы она не вылилась в нечто непомерное
==============================
Ещё точнее, у меня постепенно формируется нечто вроде собственного фреймворка, на основе которого можно многое писать значительно быстрей.
Вот мне и хотелось бы максимально универсальное решение для отката таблиц.
Тем более, что даже только лишь в данном задании мне надо заботиться об откате нескольких таблиц. Нечто универсальное само напрашивается.

Но для того определиться, в каком направлении искать решение, опыта не хватает.

  Ответить  
 
 автор: GeorgeIV   (07.02.2010 в 10:56)   письмо автору
 
   для: Eugene77   (06.02.2010 в 12:54)
 

Может изменить логику работы и не давать пользователям редактировать критичные для сайта таблицы? С чем связана такая необходимость?

  Ответить  
 
 автор: Trianon   (07.02.2010 в 18:15)   письмо автору
 
   для: GeorgeIV   (07.02.2010 в 10:56)
 

Я таки очень надеюсь, что Евгения правильно понял, что под редактированием имелся в виду процесс добавления, удаления и изменения строк таблицы, а не модификация её структуры.
Т.е. DML, а не DDL.

  Ответить  
 
 автор: Eugene77   (08.02.2010 в 16:54)   письмо автору
 
   для: Trianon   (07.02.2010 в 18:15)
 

>Я таки очень надеюсь, что Евгения правильно понял, что под редактированием имелся в виду процесс добавления, удаления и изменения строк таблицы, а не модификация её структуры.
Да
>Т.е. DML, а не DDL.
Этого у Симяднева в книге нет. Так что непонятно.
Надо почитать, чтобы ответить мне на свой вопрос?

To: GeorgeIV
Таблицы большие ~50M каждая и изначально содержат много ошибок (до 10%), кроме того страдают неполнотой (до 30%), но в некоторых случаях это почти незаметно, а в других случаях посетитель может подправить таблички, и всё заработает.
Только вот придётся, видимо, учитывать возможность, что кто-то будет вольно или невольно вносить ошибочную информацию.
Вот я и думаю, если это выяснится, как организовать процедуру отката ?

  Ответить  
 
 автор: Trianon   (08.02.2010 в 17:04)   письмо автору
 
   для: Eugene77   (08.02.2010 в 16:54)
 

>>Т.е. DML, а не DDL.
>Этого у Симяднева в книге нет. Так что непонятно.
У Симдянова.

Чего нет?
И почему именно там?

Create table roll_up_back (
id INT(11), 
date_time DATETIME,
seq INT(11),
operator_id INT(11),
terminal_id INT(11),
table_id INT(11),
op TINYINT(1),  -- 1-del, 2-upd, 3-ins
assign_list LONGTEXT
)


Да. Я не люблю enum'ов.
Кому спичит, могут написать op ENUM ('-', 'del', 'upd', 'ins'),

  Ответить  
 
 автор: Eugene77   (09.02.2010 в 18:04)   письмо автору
 
   для: Trianon   (08.02.2010 в 17:04)
 

Поле
assign_list LONGTEXT
непонятно как заполняется.
Какой оно формат имеет?
Если редактируемая таблица имеет примерно 20 полей, хочется, естественно, иметь возможность просматривать срезы по каждому из полей, поэтому напрашивалась такая структура, когда в таблице
roll_up_back
есть поле для названия изменённого поля, для старого значения, и для нового значения.
Всё бы хорошо, но поля могут иметь разные типы.
Фактически, в моих таблицах, относящихся к данному проекту, это ENUM, VARCHAR, INT, SET.
Возможно их свести к общему знаменателю? (Чтобы потом универсальный триггер отслеживающий обновления вешать на любую таблицу, не задумываясь о её структуре?)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования