我对一个看似简单的概念感到困惑。Mysql 将确定性函数定义为
总是为相同的输入参数产生相同的结果
所以在我的理解中,功能像
CREATE FUNCTION foo (val INT) READS SQL DATA
BEGIN
DECLARE retval INT;
SET retval = (SELECT COUNT(*) FROM table_1 WHERE field_1 = val);
RETURN retval;
END;
不是确定性的(不能保证在两次调用函数之间不会发生删除/更新/插入)。同时,我看到许多功能几乎相同,即根据查询结果返回值,并声明为DETERMINISTIC
. 看起来我错过了一些非常基本的东西。
谁能澄清这个问题?
谢谢。
更新
感谢那些回答(+1)的人;DETERMINISTIC
到目前为止,关键字的滥用似乎很普遍。对我来说仍然很难相信有这么多人这样做,所以我会等待其他答案。