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 ;
for1ѭ,
DELETE
UPDATE
有触发器 他们可以发射
BEFORE
AFTER
动作。 触发“ 4”动作可以像这样通过强制错误来取消动作。
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/zh/faqs-triggers.html#qandaitem-B-5-1-10     
您可以将触发器与UDF(用户定义的函数)结合使用,以便对数据库执行的相应操作将执行调用C / C ++函数的触发器。 只要考虑一下这种机制就可以在mysql服务器进程内部而不是在客户端运行代码。     

要回复问题请先登录注册