gpt4 book ai didi

php - MySQL 触发器每次更新都会添加两行

转载 作者:行者123 更新时间:2023-11-29 12:05:38 24 4
gpt4 key购买 nike

我试图在每次更新“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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com