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?

¿Fue útil?

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é.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top