我怎么知道mysql表是否更新了?

时间:2011-08-04 14:47:51

标签: mysql c database

实际上,我在本页的另一个问题上使用了以下句子:

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

但我认为它使用了大量的处理时间,如果更新表时mysql-server会向我发送信号会更容易,所以我可以等到我的程序检测到该信号。

这可能吗?我正在用C编程。

非常感谢。

1 个答案:

答案 0 :(得分:4)

您可以使用与C(++)中编程的UDF结合的触发器来进行通知 这是虚拟代码。

DELIMITER $$

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

DELIMITER ;

您必须执行插入/删除和更新的触发器。每张桌子3次。
您无法向系统表IIRC添加触发器,因为它们实际上是视图而不是实际表。

你需要在C(++)中编写一个名为changenotification的UDF,为你做通知。

<强>链接:
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