Как я могу знать, обновлена ​​ли таблица mysql? - PullRequest
3 голосов
/ 04 августа 2011

На самом деле я использую следующее предложение, прочитанное по другому вопросу на этой странице:

SELECT UPDATE_TIME
FROM   information_schema.tables
WHERE  TABLE_SCHEMA = 'dbname'
   AND TABLE_NAME = 'tabname'

Но я думаю, что он использует много времени процесса, будет проще, если mysql-сервер отправит мне сигнал при обновлении таблицы, поэтому я могу подождать, пока моя программа обнаружит этот сигнал.

Возможно ли это? Я программирую на C.

Большое спасибо.

1 Ответ

4 голосов
/ 04 августа 2011

Вы можете использовать триггер в сочетании с UDF, запрограммированным в C (++), чтобы сделать уведомление.
Вот фиктивный код.

DELIMITER $$

CREATE TRIGGER ai_table1_each AFTER INSERT ON table1 FOR EACH ROW
BEGIN
  CALL ChangeNotification('table1', 'insert', NEW.id);
END $$

DELIMITER ;

Вам нужно будет выполнить триггер для вставки / удаления и обновления.3x на таблицу.
Нельзя добавить триггер к системным таблицам IIRC, потому что это действительно представления, а не фактические таблицы.

Вам нужно написать UDF на C (++) с именем changenotification, который сделает уведомление за вас.

Ссылки:
http://dev.mysql.com/doc/refman/5.0/en/adding-udf.html
http://www.mysqludf.org/
http://dev.mysql.com/doc/refman/5.0/en/triggers.html
http://dev.mysql.com/doc/refman/5.0/en/getting-unique-id.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...