Я пытаюсь обновить таблицу «ticketHistory» после каждого обновления таблицы «билетов». Я следующий триггер настроен для запуска всякий раз, когда мой стол «БИЛЕТЫ» обновляется (обычно, когда поле редактируется):Триггер MySQL добавляет две строки для каждого обновления.
TRIGGER `ticket_edit` AFTER UPDATE ON `tickets` FOR EACH ROW INSERT INTO ticketHistory
(ticketId, action, originator, assigned, date)
VALUES
(NEW.ticketId, "Edited", NEW.userId, NEW.assigned, NEW.lastUpdated);
Всякий раз, когда обновление будет сделано в мое приложение, поле редактируется обновляется, так как а также время «lastUpdated». Я думаю, потому что два поля обновляются, он запускает триггер дважды, в результате чего две одинаковые строки вставляются в мою таблицу «ticketHistory». Мне нужна только одна строка.
Есть ли способ ограничить его только одним вставкой? Любая помощь очень ценится!
EDIT
Все вставки базы данных и обновления делается с помощью ActiveRecord CodeIgniter в.
Моя модель:
public function editTicket($ticket)
{
$q = $this->db->where('ticketId', $ticket['ticketId']);
$q = $this->db->update('tickets', $ticket);
$results = $this->db->affected_rows();
}
Мой контроллер:
public function edit_ticket()
{
$ticketId = $this->uri->segment(3);
$description = str_replace("\n", "\r", $this->input->post('description'));
$ticket = array(
'ticketId' => $ticketId,
'headline' => $this->input->post('headline'),
'description' => $description,
'priority' => $this->input->post('priority'),
'category' => $this->input->post('category'),
'lastUpdated' => date("Y-m-d H:i:s", time())
);
$this->tickets->editTicket($ticket);
}
в вашем коде не показан, когда вы обновляете 'билеты', делайте это в одном утверждении не два. это должно прояснить ситуацию в 'ticketHistory'. – Drew
Ну, чтобы сделать вещи более запутанными, я использую CodeIgniters ActiveRecord, чтобы сделать обновление, когда обновляю «билет». Это делается в двух утверждениях? – jldavis76
Ха-ха! Я знаю, но у меня нет выбора – jldavis76