как прoвеpить изменилась ли тaблицa(тaблицы) в бaзe?

  • Автор темы Автор темы Kudin
  • Дата начала Дата начала

Kudin

Новичок
как прoвеpить изменилась ли тaблицa(тaблицы) в бaзe?
не могу врубиться...
 
по работе дали задание - именно проверять - если таблица(ы) изменялись то кидать запрос (массив записывать в файл), если не изменялась - то доставать данные с сериализованного массива от прошлого запроса...
 
нужно какоето обращение к базу первый рас сделать... но не могу понять какое ...
думал show table status но не оно вроде ... хз (
 
по работе дали задание - именно проверять - если таблица(ы) изменялись то кидать запрос (массив записывать в файл), если не изменялась - то доставать данные с сериализованного массива от прошлого запроса...
Это не задание, это почти наверняка попытка одеть брюки через голову.

Я бы всё таки посоветовал узнать первопричины для начала, перед тем как браться реализовывать заведомо кривое решение.
 
Это не задание, это почти наверняка попытка одеть брюки через голову.

Я бы всё таки посоветовал узнать первопричины для начала, перед тем как браться реализовывать заведомо кривое решение.

я понимаю, что это жесть какая-то ... но вообще такое возможно сделать запросом? или это шляпа какая-та ?
 
Kudin
Это шляпа. Я не знаю ни одного достоверного способа это сделать (не отрицаю, что они есть, тем не менее :-) )

Так или иначе, как я уже говорил выше - нужно лечить болезнь, а не избавляться от симптомов. Так что я бы всё таки начал с первопричин такого задания.
 
Изменилась по сравнению с чем? В SHOW TABLE STATUS есть дата модификации таблицы. Но с чем ты ее будешь сравнивать -- твоя проблема.
 
С.
Там дата далеко не всегда соответствует действительному факту изменения
 
ок вобщем спаисибо
завтра буду доказывать боссу что это вариант через задницу )
 
Kudin
Не, так не надо. "Обосрать каждый может" - плохая стратегия.

Лучше узнать исходную задачу и предложить лучшее решение.
 
что значит изменилась? был сделан алтер таблицы или данные добавились в таблицу?
 
сделай триггер который будет заполнять очередь заданий, по крону обрабатывай и очищай очередь
 
массив записывать в файл, если не изменялась - то доставать данные с сериализованного массива от прошлого запроса...
чаще всего будет медленнее чем выполнить запрос повторно при включенном кверикеше в муське.
я бы понял, если массив клался бы в мемкеш, но и тогда правильная практика просто кешировать на заданный промежуток времени.

вариант с тригерами хорош, но требует рутовских прав в муське
 
ну,для веб приложения рутовые права не потребуются всё равно
а разработчик БД без рутовых прав к ней само по себе довольно странная ситуация
 
Сначала надо понять, что такое "изменение таблицы". Вот я понимаю, что это в принципе ALTER, тоесть изменение струткуры, тогда как бы отсюда и следствие ответа на вопрос. А вот если тебе надо узнать, какие записи модифицировались в таблице, то сделай поле,в котором будет поле modified timestump и пропиши на него что-то типа


CREATE TABLE `msgs` (
`id` INT PRIMARY KEY AUTO_INCREMENT,
`msg` VARCHAR(256),
`ts_create` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`ts_update` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)

как-то так, точнее посмотришь в справочнике...


Суть-то какая? Цель так и не услышали и нет конкретики, что значит термин - "модификация таблицы"
 
Так вот суть - проверяй дату создания и модификации записи - это тебе отчет о "модифицированных таблицах". Можно даже написать триггер и вести лог изменений. Вопрос - босс попроситл отслеживать записи в БД? Чтобы знать какая девочка какую запись испортила или удалила во время работы в CMS ?
 
Сверху