MySQL是否允许在C中进行回调,以便在发生更改时,我会收到通知?

MySQL是否允许在C中进行回调,以便当数据库中发生更改(如插入),由其他程序或用户在命令行执行时,我会收到通知?

我猜它没有,因为mysqlclient是一个库,而不是一个正在运行的线程。 但我不妨问一下。

像这样创建一个触发器。

DELIMITER $$ CREATE TRIGGER ad_mytable_each AFTER DELETE ON MyTable FOR EACH ROW BEGIN #write code that trigger After delete (hence the "ad_" prefix) #For table MyTable (The _MyTable_ middle) #On each row that gets inserted (_each suffix) # #You can see the old delete values by accesing the "old" virtual table. INSERT INTO log VALUES (old.id, 'MyTable', old.field1, old.field2, now()); END$$ DELIMITER ; 

INSERTDELETEUPDATE有触发器
他们可以在行动BEFOREAFTER开火。
操作BEFORE的触发器可以通过强制错误来取消操作,如此。

 CREATE TRIGGER bd_mytable_each BEFORE DELETE ON MyTable FOR EACH ROW BEGIN #write code that trigger Before delete (hence the "db_" prefix) declare DoError Boolean; SET DoError = 0; IF old.id = 1 THEN SET DoError = 1; END IF; IF (DoError = 1) THEN SELECT * FROM Table_that_does_not_exist_to_force_error; #seriously this example is in the manual. END$$ DELIMITER ; 

这将阻止删除记录1。

之前的UPDATE触发器甚至可以更改更新的值。

 CREATE TRIGGER bu_mytable_each BEFORE UPDATE ON MyTable FOR EACH ROW BEGIN IF new.text = 'Doon sucks' THEN SET new.text = 'Doon rules'; END$$ DELIMITER ; 

希望你能快乐起来。

MySQL的触发器允许您挂钩插入/更新/删除查询并执行其他操作。 例如,您可以将它们记录在单独的表中。

那么你可以将一个触发器附加到用户定义的函数,并让它调用外部程序,然后通知你的代码..

http://dev.mysql.com/doc/refman/5.0/en/faqs-triggers.html#qandaitem-B-5-1-10

您可以将触发器与UDF (用户定义的函数)结合使用,以便数据库上的相应操作执行调用C / C ++函数的触发器。

只要考虑这个机制在mysql服务器进程内运行你的代码,而不是在客户端。