当您将MySQL函数标记为DETERMINISTIC
时,文档说明
如果例程对于相同的输入参数总是产生相同的结果,则该例程被认为是“确定性的”,否则被认为是“不确定的”。
这是真的吗?如果在不同的客户端会话中调用,DETERMINISTIC
函数是否必须返回相同的结果?或者在会话中的不同查询中?
换句话说,NOW()
会被视为DETERMINISTIC
吗?
答案 0 :(得分:3)
NOW()非常不确定,只是你给出的定义。确定性的观点是它允许基于假设的各种优化,如果结果取决于当前时间,那么这些假设不会成立。 有关示例讨论,请参阅http://forums.mysql.com/read.php?98,406891,406895#msg-406895。
答案 1 :(得分:1)
根据定义NOW()
是非确定性的。如果它是确定性的,它应该是一个常数,因为它需要0个参数。因此,每次通话都会产生相同的结果。