我對一個看似簡單的概念感到困惑。 Mysql的定義確定性函數爲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;
不確定性(有不保證在2次調用函數之間不會發生刪除/更新/插入操作)。同時,我看到很多功能幾乎相同,即基於查詢結果的返回值,並聲明爲DETERMINISTIC
。看起來我錯過了一些非常基本的東西。
任何人都可以澄清這個問題嗎?
謝謝。
更新 感謝那些回答(+1)的人;到目前爲止,它似乎有一個廣泛的濫用DETERMINISTIC
關鍵字。我很難相信有這麼多人這樣做,所以我會稍微等待其他答案。
你能說出你正在談論的「許多功能」的例子嗎? – Mat
@Mat:例如http://dev.mysql.com/doc/refman/5.0/en/create-procedure.html(在用戶註釋部分,搜索「CREATE FUNCTION db.fnfullname」 - 它從數據庫爲傳遞的ID並返回基於select的結果的值)。 – a1ex07
「...用戶評論...」...你有一些真正的mysql功能? – Mat