MySQL - Créer une fonction? Modifie les données SQL?
-
12-11-2019 - |
Question
Je suis sur le point d'écrire un CREATE FUNCTION
avec mysql Et je me demande si CREATE TEMPORARY TABLE
compte pour le drapeau MODIFIES SQL DATA
. Fonction ne modifie aucune table permanente, juste une table temporaire, qu'il crée à des fins d'optimisation. Devrais-je utiliser le drapeau MODIFIES SQL DATA
ou seulement READS SQL DATA
? Qu'est-ce qu'un vraiment bénéficier à utiliser MODIFIES SQL DATA
ou READS SQL DATA
Flag de toute façon?
La solution
À partir de maintenant (MySQL 5.5), ces caractéristiques ne servent que de documentation en code.
De http://dev.mysql.com/doc/refman/5.5/en/create-proceture.html
Plusieurs caractéristiques fournissent des informations sur la nature de l'utilisation des données par la routine. Dans MySQL, ces caractéristiques sont uniquement consultatives. Le serveur ne les utilise pas pour limiter les types d'instructions qu'une routine sera autorisée à exécuter.
C'est en contraste avec (NON)DETERMINISTIC
Clause, qui sert d'indice pour optimiser si les résultats de la fonction peuvent être mis en cache.