首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL触发器获取导致触发触发器的当前查询

MySQL触发器获取导致触发触发器的当前查询
EN

Stack Overflow用户
提问于 2012-05-18 18:42:02
回答 3查看 4.3K关注 0票数 2

在过去的4个小时里,我一直在网上寻找解决方案,但我所能找到的是:

你不能。不可能。不会发生的。

我不喜欢这种方法。

我的理论是,如果它在某个时刻存储在information_schema.processlist中,那么一定有某种方法来获取它。我试着让一个触发器在processlist表上运行,但是不能工作,我想是因为它是一个视图。运行日志不是一种选择,因为这将影响已经裁剪的服务器上的性能,而且有许多查询正在运行,我希望它只在特定表上记录,然后只在更新时记录。

这就是传说中的stackoverflow!在那里你可以找到所有问题的解决方案,因为它充满了天才!

所以,我求求你,天才在哪里!展示你们自己!!:-)

谢谢,佐德

EN

回答 3

Stack Overflow用户

发布于 2012-05-18 22:05:18

这里的问题是MySQL触发器的作用域是行级的,而不是语句级的。因此,在触发器中,您可以访问给定行中每列的旧值和新值,但不能访问导致触发器触发的语句。

关于information_schema.processlist,实际上没有什么东西被“存储”(持久化)在该视图中。它只是一个指向进程列表的SQL接口,而触发触发器的语句在触发器的作用域内是不可访问的。

您说过不想启用通用查询日志,但由于多种原因(包括event_Time的粒度为1秒),这种方法并不完美,但这里有一个使用general_log表重写触发器的示例:

代码语言:javascript
复制
SET GLOBAL GENERAL_LOG='ON';
SET GLOBAL LOG_OUTPUT='TABLE';

DELIMITER || 

CREATE TRIGGER DEBUG_DATE BEFORE UPDATE ON db.tbl FOR EACH ROW 
BEGIN 
  DECLARE Q MEDIUMTEXT; 
  SELECT argument INTO Q 
  FROM mysql.general_log 
  where thread_id = connection_id() 
  order by event_time desc 
  limit 1;

  INSERT INTO db.tbl_log (INFO) 
  VALUES (Q); 

END ||

DELIMITER ;
票数 2
EN

Stack Overflow用户

发布于 2014-10-28 17:03:58

我们已经调查了这个问题,发现"DECLARE“在上面的示例中不起作用,而且应该在服务器上启用general_log标志。最后,我们有以下触发器代码:

代码语言:javascript
复制
DELIMITER $$

DROP TRIGGER IF EXISTS `our_trigger`$$
CREATE TRIGGER `our_trigger` 
BEFORE UPDATE ON `our_table_for_debug` 
FOR EACH ROW BEGIN 

SELECT argument INTO @tquery FROM mysql.general_log where thread_id = connection_id() and argument like 'update%' order by event_time desc limit 1;
INSERT INTO `our_log_table` (`query`) VALUES (@tquery);

END IF;

END$$

DELIMITER ;

"our_log_table“是具有一个名为query的媒体文本字段的表。要启用通用日志,您应该运行以下查询: general_log = 1;或者直接在mysql设置中启用它。

票数 1
EN

Stack Overflow用户

发布于 2012-05-18 19:17:21

代码语言:javascript
复制
SELECT INFO FROM INFORMATION_SCHEMA.PROCESSLIST WHERE ... ;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10651114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档