在单个InnoDB事务保证中的2个以上查询中使用NOW()是否在数据库中确切地插入了datetime值?
换句话说,是NOW(),即使你在单个交易中有超过20个查询使用它总是相同,还是会改变?
答案 0 :(得分:5)
Apparently it is not guaranteed但可以从语句更改为语句。有一种解决方法,您可以使用as shown here:
BEGIN;
SELECT @now := NOW();
INSERT ... VALUES (..., @now, ...);
INSERT ... VALUES (..., @now, ...);
UPDATE ... @now ...;
COMMIT;
如果你想完全避免这种情况,只需将当前日期和时间设置为PHP变量并改为使用它。