MySQL触发器:如何知道哪个脚本调用它?

时间:2009-12-30 18:37:27

标签: php sql mysql triggers

我有一个mysql触发器,每次更新特定的表时都会记录。

有没有办法记录PHP SCRIPT触发它? (当然没有修改每个PHP脚本,这会破坏我的目的)

另外,有没有办法记录触发它的UPDATE之前的SQL语句是什么?

由于

3 个答案:

答案 0 :(得分:1)

简答:不,不。遗憾。

你想要达到什么目的?也许还有另一种方式......

答案 1 :(得分:0)

不,但你可以得到一些更具体的方向。

首先,如果您使用的是持久连接,请将其关闭。这将使您的日志更易于使用。

第二,因为听起来你有多个代码库访问同一个数据库,所以为每个代码库创建一个具有完全相同权限的不同用户,并使每个代码库以不同的用户登录。现在,当您查看日志时,您可以看到哪个应用程序正在执行哪些操作。

第三,如果你有查询登录,那么紧接在触发器之前的UPDATE将是导致触发的UPDATE。

第四,如果您的应用程序对mysql连接使用任何类型的封装,那么修改它以在将查询发送到数据库到文件时写入调用堆栈应该是微不足道的。

答案 2 :(得分:0)

我已经阅读了一些答案和评论。我有一个想法,只有当你的查询通过一个点时才会有用。例如,如果您有一个数据库类,所有查询都将通过执行。

如果是这种情况,您可以向查询本身添加注释。注释将包括函数调用跟踪,并将作为SQL注释添加到查询中。

接下来,您将打开查询日志记录,并能够在日志文件中查看每个查询的调用位置。

如果您的查询没有通过单点,您可能会失败。

最后一个建议是看看MySQL Proxy。我没有太多使用它,但它旨在进行查询的中间处理。但是,我仍然认为您需要修改PHP脚本以传递其他信息。