mySQL - ¿CREAR FUNCIÓN?¿MODIFICA DATOS SQL?
-
12-11-2019 - |
Pregunta
Estoy a punto de escribir un CREATE FUNCTION
con MySQL y me pregunto, si CREATE TEMPORARY TABLE
cuenta para la bandera MODIFIES SQL DATA
.Función no modifica ninguna tabla permanente, solo una tabla temporal, que crea con fines de optimización.¿Debería usar la bandera? MODIFIES SQL DATA
o solo READS SQL DATA
?¿Qué es realmente beneficio usar MODIFIES SQL DATA
o READS SQL DATA
bandera de todos modos?
Solución
A partir de ahora (MySQL 5.5), estas características sirven sólo como documentación en el código.
De http://dev.mysql.com/doc/refman/5.5/en/create-procedure.html
Varias características proporcionan información sobre la naturaleza de los datos uso por la rutina.En MySQL, estas características son sólo de asesoramiento.El servidor no los usa para restringir qué tipo de instrucciones se permitirá que la rutina se ejecute.
Esto contrasta con (NON)DETERMINISTIC
cláusula, que sirve como una pista para el optimizador sobre si los resultados de la función se pueden almacenar en caché.