Đây là một thử nghiệm ngắn để xem điều gì sẽ xảy ra.
create function determin_rand (i integer)
returns float DETERMINISTIC
return rand();
create function not_determin_rand (i integer)
returns float
return rand();
select determin_rand(1) as d1 , determin_rand(1) as d2,
not_determin_rand(1) as nd1, not_determin_rand(1) as nd2
0.00850549154 0.831901073456 0.133989050984 0.174242004752
Vì các giá trị khác nhau nên hàm được gọi mỗi lần. Trong hàm đầu tiên, tôi đã khai báo nó là xác định, nhưng nó không tạo ra sự khác biệt.
Tôi đã tạo một sqlfiddle để bạn dùng thử với các phiên bản khác nhau của mysql.
http://sqlfiddle.com/#!2/a8536/2