微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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服务器进程内部而不是在客户端运行代码。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。