За последние 24 часа нас посетили 22668 программистов и 1278 роботов. Сейчас ищут 742 программиста ...

Как посчитать контрольную сумму?

Тема в разделе "MySQL", создана пользователем aleksen, 6 окт 2007.

  1. aleksen

    aleksen Активный пользователь

    С нами с:
    5 окт 2007
    Сообщения:
    3
    Симпатии:
    0
    Необходимо проверить были ли внесены изменения в таблицу базы данных. Хочу реализовать это следующим образом: считать хэш значение таблицы, затем сравнить с полученным ранее.
    Вопрос таков: Существует ли в MySQL возможность посчитать контрольную сумму всех записей в таблице? И есть ли другой способ проверить были ли внесены последние изменения в таблицу?
     
  2. Goryn

    Goryn Активный пользователь

    С нами с:
    4 апр 2006
    Сообщения:
    398
    Симпатии:
    0
    Адрес:
    Ярославль
    Триггеры...
     
  3. aleksen

    aleksen Активный пользователь

    С нами с:
    5 окт 2007
    Сообщения:
    3
    Симпатии:
    0
    Я не спец в базах данных, но кажись чтоб создать триггер надо иметь соответсвующие права. Ели так, то я думаю это не реально на провайдерском хостинге. Скорее всего прав не дадут.
     
  4. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    aleksen
    Можно таблице дать дополнительное поле changed TIMESTAMP NULL - оно будет автоматически обновляться до текущей даты при добавлении/изменении записи - а потом в качестве контрольной суммы брать дату/время последнего изменения запросом SELECT MAX(changed) FROM mytable.
     
  5. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    1) При создании таблицы укажи опцию CHECKSUM=1, тогда контрольная сумма будет сама меняться при изменении таблицы
    [sql]CREATE TABLE test (
    ...
    ) CHECKSUM=1;[/sql]
    Чтобы получить контрольную сумму выполняй запрос:
    [sql]CHECKSUM TABLE test;[/sql]
    2) Или выполняй запрос
    [sql]SHOW TABLE STATUS LIKE 'test'[/sql]
    И смотри на Update_time
     
  6. aleksen

    aleksen Активный пользователь

    С нами с:
    5 окт 2007
    Сообщения:
    3
    Симпатии:
    0
    Sergey89
    Спасибо, это именно то, что мне и надо.