2015-04-17 85 views
1

我正在創建一個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

回答

1

作出這樣的觸發器:

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