使用 NOW 更新 MYSQL 上的列无法正常工作

Updating a column on MYSQL with NOW doesn't work properly

我需要使用 Now() 在 table 上插入一条记录来测量触发器消耗的时间。 我有一个名为 "MyTable" 的 table,带有如下触发器(插入前):

create trigger ...

Set @startTime = NOW();

-- Do complex an expensive operations on the MyTable..

Set @endTime = NOW();

Insert into myLogTable(tableName, Start, End, Creation)
Values ('MyTable', @startTime, @endTime, NOW());

问题是 table 总是在 Start、End 和 Creation 列中获得相同的值,即使放置 Sleep(10) 以获得很大的差异。这就像 mysql 正在用一个常数值改变 CURRENT_TIMESTAMP。

myLogTable 中填充了如下内容:

我尝试使用时间戳函数或列没有成功,而且我总是在 3 列中得到相同的值。

如何记录触发器在每次调用中消耗的时间?

NOW()函数在SQL语句的start处求值;它 returns 一个在 SQL 语句执行期间保持不变的值。在语句 returns 内对 NOW() 的每个引用都具有相同的值。语句执行的函数或触发器中的任何引用都会返回相同的常量值。

SYSDATE()函数的不同之处在于它returns执行时的日期时间值。

比较:

SELECT NOW(), SLEEP(5), NOW(); 
SELECT SYSDATE(), SLEEP(5), SYSDATE();

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_sysdate