mysql触发器 - 从触发器中选择count(*)

时间:2013-01-22 08:08:59

标签: mysql triggers

我想计算创建/内部的行(不知道它叫什么)触发器。

就像我有一个触发器:

CREATE
DEFINER=`root`@`localhost`
TRIGGER `mydb`.`tn_air_staff_leave_application`
AFTER INSERT ON `mydb`.`staff_leave_application`
FOR EACH ROW
BEGIN
----
----
----
END$$

并想知道触发器要创建多少行,我需要在trigger中包含这个值:

set @newrows:= (select count(*) from tn_air_staff_leave_application); 

有可能吗?如果没有任何其他解决方案吗?

1 个答案:

答案 0 :(得分:1)

触发器是纯粹被动的代码段,在数据库中的表插入,更新或删除行之前或之后执行。

触发器无法主动执行,因此没有您可以读取的返回值。

你可以做的是让你的触发器将值写入另一个表或一个会话变量,然后可以在额外的查询中查询。

您不能将整个结果行或多行的结果集存储到会话变量中,就像您在示例中尝试一样。

在MySQL中,触发器始终执行FOR EACH ROW,意味着在触发器中你只能查看一行,而不是几行。

修改

实际上,您的示例查询返回单个值,因此这将起作用。 (将tn_air_staff_leave_application表中的总记录数量传递到本地会话变量@newrows

要获得更具体的帮助,您需要更具体地了解您正在尝试做的事情