【发布时间】:2018-09-10 04:06:10
【问题描述】:
在 InnoDB 插入/更新语句必须等待事务完成的情况下,用于 NOW() 和/或 CURRENT_TIMESTAMP 的值是什么?
它是从数据准备好插入/更新但开始等待锁释放时的值,还是从实际应用更改时的值?我在文档中找不到任何解释这一点的内容。
【问题讨论】:
标签: mysql transactions locking mariadb innodb
在 InnoDB 插入/更新语句必须等待事务完成的情况下,用于 NOW() 和/或 CURRENT_TIMESTAMP 的值是什么?
它是从数据准备好插入/更新但开始等待锁释放时的值,还是从实际应用更改时的值?我在文档中找不到任何解释这一点的内容。
【问题讨论】:
标签: mysql transactions locking mariadb innodb
正如您在 mysql doc 中看到的,主要区别在于 now() (和 current_timestamp )和 SYSDATE() 的使用之间。
NOW() 返回一个常数时间,该时间指示 语句开始执行。 (在存储的函数或触发器中, NOW() 返回函数或触发语句的时间 开始执行。)这与 SYSDATE() 的行为不同,后者 返回它执行的确切时间。
你可以在这里找到一些参考。
https://dev.mysql.com/doc/refman/5.7/en/timestamp-initialization.html https://dev.mysql.com/doc/refman/5.6/en/date-and-time-functions.html#function_sysdate https://dev.mysql.com/doc/refman/5.6/en/date-and-time-functions.html#function_now
【讨论】: