MySQL事件和表之间的连接

问题描述:

我正在创建一个MySQL事件,但它与表记录ID 有关,所以当那个记录被删除时,这个MySQL事件应该被删除。MySQL事件和表之间的连接

它与我的代码工作,但如果记录是直接从phpMyAdmin删除?

尝试此方案时,事件不会被删除并且记录不存在。所以发生错误。

$this->db->insert("invoice", $data); 
     $last = $this->db->insert_id(); 
     if ($last) 
      $str = $this->db->last_query(); 
     $this->db->query("SET GLOBAL event_scheduler = 'ON'"); 

     $this->db->query("CREATE EVENT rec" . $last . " ON SCHEDULE 
EVERY 1 MONTH STARTS DATE_SUB(NOW(),INTERVAL '0:01' HOUR_MINUTE) 
ON COMPLETION PRESERVE ENABLE DO $str"); 

我该如何克服这个问题?我听说我可以使用触发器,但是如何?

+1

是可访问的,你应该使用删除的TRIGGER删除相关的事件... – Marki555

作出这样的触发器:

SET @ename:='rec'; 
SET @sql_text = concat('CREATE TRIGGER delete_invoice_event AFTER DELETE on TABLE FOR EACH ROW BEGIN DROP EVENT IF EXISTS ', @ename ,'old.id END'); 

PREPARE stmt FROM @sql_text; 
EXECUTE stmt; 
DEALLOCATE PREPARE stmt; 

你必须准备使用的语句,因为你的事件名称是动态的,基于被删除的记录的ID将是old.id