0

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

就像我有一个触发器:

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

并且想知道触发器将创建多少行,我需要在触发器中使用这个值:

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

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

4

1 回答 1

1

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

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

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

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

在 MySQL 中,触发器总是被执行FOR EACH ROW,这意味着在触发器中你只会看一行,而不是几行。

编辑:

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

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

于 2013-01-22T08:23:55.003 回答