在触发器中使用计数来更新另一个表

end*_*rdy 1 mysql trigger count

假设我有一个表,trx_request其中包含以下数据

id | confirmed(TIME) | finished(TIME)
-------------------------------------
1  | 12:05:00        | NULL
2  | 13:11:00        | NULL
Run Code Online (Sandbox Code Playgroud)

和另一个trx_updates使用以下数据调用的表

request(FK) | role(INT) | added(TIME)
------------------------------------------
1           | 1         | 14:02:00
Run Code Online (Sandbox Code Playgroud)

我想制作一个触发器,在将记录插入后trx_updates,计算该request字段中有多少记录具有相同的值(例如有多少个“1”)。然后,检查计数是否达到 4(“1”出现 4 次)。当它发生时,它会将 更新trx_requests.finished为 NOW()。

如何在触发器中创建一个计数语句?或者触发器是要走的路?

Phi*_*lᵀᴹ 6

这个触发器可以完成以下工作:

create trigger trx_updates_atrig
after insert on trx_updates for each row begin
DECLARE updatecount INT;
  set updatecount = ( select count(*) from trx_updates where request = new.request );
  if updatecount=4
    then
      update trx_request set finished=NOW() where id = new.request;
  end if;
end//
Run Code Online (Sandbox Code Playgroud)

SQLFiddle 演示