Me confundí con un concepto aparentemente simple. MySQL define la función determinista como una función queFunción determinista en mysql
siempre provoca el mismo resultado para el mismo parámetros de entrada
Así que en mi entendimiento, funciones como
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;
no son deterministas (hay no hay garantía de que eliminar/actualizar/insertar no ocurra entre 2 llamadas a la función). Al mismo tiempo, vi muchas funciones que hacen más o menos lo mismo, es decir, el valor de retorno en función del resultado de las consultas y declarado como DETERMINISTIC
. Parece que me estoy perdiendo algo muy básico.
¿Alguien podría aclarar este problema?
Gracias.
Actualización Gracias por los que respondieron (+1); hasta ahora parece que hay un uso indebido generalizado de la palabra clave DETERMINISTIC
. Todavía es difícil de creer para mí que tanta gente lo haga, así que esperaré un poco para obtener otras respuestas.
¿Podría indicar un ejemplo de las "muchas funciones" de las que está hablando? – Mat
@Mat: Por ejemplo, http://dev.mysql.com/doc/refman/5.0/en/create-procedure.html (en la sección de comentarios del usuario, busque "CREAR FUNCIÓN db.nombrefnombre" - lee la fila desde db para una identificación aprobada y devuelve un valor basado en el resultado de la selección). – a1ex07
"... comentarios de usuario ..." ... ¿Alguna función real de MySQL que tenga en mente? – Mat