使用 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 中填充了如下内容:
- MyTable - 2015-01-01 10:45:00 - 2015-01-01 10:45:00 - 2015-01-01 10:45:00
- MyTable - 2015-01-02 10:11:10 - 2015-01-02 10:11:10 - 2015-01-02 10:11:10
- MyTable - 2015-01-03 10:55:00 - 2015-01-03 10:55:00 - 2015-01-03 10:55:00
我尝试使用时间戳函数或列没有成功,而且我总是在 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
我需要使用 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 中填充了如下内容:
- MyTable - 2015-01-01 10:45:00 - 2015-01-01 10:45:00 - 2015-01-01 10:45:00
- MyTable - 2015-01-02 10:11:10 - 2015-01-02 10:11:10 - 2015-01-02 10:11:10
- MyTable - 2015-01-03 10:55:00 - 2015-01-03 10:55:00 - 2015-01-03 10:55:00
我尝试使用时间戳函数或列没有成功,而且我总是在 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