2015-04-17 4 views
1

Я создаю событие MySQL, но оно связано с идентификатором таблицы, , поэтому, когда эта запись удаляется в это время, это событие 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; 

Вы должны использовать ГОТОВЯТ заявление, потому что ваше имя события является динамическим, на основе удаляемого идентификатора записи, который был бы доступен old.id

Смежные вопросы