Tôi đã nhầm lẫn với một khái niệm dường như đơn giản. Mysql định nghĩa chức năng xác định là một hàm màChức năng xác định trong mysql
luôn tạo ra kết quả tương tự cho đầu vào cùng một thông số
Vì vậy, trong sự hiểu biết của tôi, các chức năng như
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;
là không xác định (có không đảm bảo rằng việc xóa/cập nhật/chèn không xảy ra giữa 2 cuộc gọi đến chức năng). Đồng thời, tôi đã thấy nhiều hàm hoạt động khá giống nhau, tức là giá trị trả về dựa trên kết quả truy vấn và được khai báo là DETERMINISTIC
. Có vẻ như tôi đang thiếu một cái gì đó rất cơ bản.
Có ai có thể làm rõ vấn đề này không?
Cảm ơn.
Cập nhật Cảm ơn những người đã trả lời (+1); cho đến nay có vẻ như lạm dụng rộng rãi từ khóa DETERMINISTIC
. Vẫn rất khó tin với tôi rằng có quá nhiều người làm điều đó, vì vậy tôi sẽ chờ một chút cho các câu trả lời khác.
Bạn có thể nêu một ví dụ về "nhiều chức năng" mà bạn đang nói đến không? – Mat
@Mat: Ví dụ: http://dev.mysql.com/doc/refman/5.0/en/create-procedure.html (trong phần nhận xét của người dùng, tìm kiếm "CREATE FUNCTION db.fnfullname" - nó đọc hàng từ db cho một id được trả về và giá trị trả về dựa trên kết quả của việc chọn). – a1ex07
"... nhận xét của người dùng ..." ... Một số chức năng mysql thực mà bạn có trong đầu? – Mat