NOW()对于DATETIME InnoDB交易有保证吗?

时间:2012-04-11 20:19:35

标签: php mysql transactions innodb

在单个InnoDB事务保证中的2个以上查询中使用NOW()是否在数据库中确切地插入了datetime值?

换句话说,是NOW(),即使你在单个交易中有超过20个查询使用它总是相同,还是会改变?

1 个答案:

答案 0 :(得分:5)

跨越事务的

Apparently it is not guaranteed但可以从语句更改为语句。有一种解决方法,您可以使用as shown here

BEGIN;
SELECT @now := NOW();
INSERT ... VALUES (..., @now, ...);
INSERT ... VALUES (..., @now, ...);
UPDATE ... @now ...;
COMMIT; 

如果你想完全避免这种情况,只需将当前日期和时间设置为PHP变量并改为使用它。