我试图在每次更新“tickets”表后更新“ticketHistory”表。我设置了以下触发器,每当我的“门票”表更新时(通常在编辑字段时)就会运行:
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”表中。我只想插入一行。
有没有办法限制它只插入一行?任何帮助是极大的赞赏!
编辑
所有数据库插入和更新都是使用 CodeIgniter 的 ActiveRecord 完成的。
我的模型:
public function editTicket($ticket)
{
$q = $this->db->where('ticketId', $ticket['ticketId']);
$q = $this->db->update('tickets', $ticket);
$results = $this->db->affected_rows();
}
我的 Controller :
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);
}
最佳答案
public function editTicket($ticket)
{
$q = $this->db->where('ticketId', $ticket['ticketId']);
echo "I am here again<br/>";
$q = $this->db->update('tickets', $ticket);
$results = $this->db->affected_rows();
}
关于php - MySQL 触发器每次更新都会添加两行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31526393/