Le simple fait d'entendre la question me fait penser à deux aspects:
ASPECT # 1: Les fonctions sont censées être DETERMINISTIQUES
Si tel est le cas, cela implique qu'une fonction doit présenter les mêmes données de retour de manière cohérente pour un ensemble de paramètres donné, PAS DE QUESTION LORSQUE VOUS APPELER LA FONCTION.
Maintenant, imaginez une fonction qui produit une réponse différente en raison de la collecte de données à différents moments de la journée sur la base de SQL statique dans la fonction. Dans un sens, cela peut toujours être considéré comme DETERMINISTIQUE si vous interrogez le même ensemble de tables et de colonnes à chaque fois, étant donné le même ensemble de paramètres.
Et si vous pouviez changer les tables sous-jacentes d'une fonction via Dynamic SQL? Vous violez la définition d'une fonction DETERMINISTIQUE.
Notez que MySQL a ajouté cette option dans /etc/my.cnf
log-bin-trust-function-creators
Bien que cela puisse être une simplification excessive, cela permet aux fonctions d'être autorisées à écrire des données dans des journaux binaires sans appliquer strictement la propriété DETERMINISTIC.
ASPECT # 2: Les déclencheurs doivent pouvoir être annulés
- Pouvez-vous imaginer un déclencheur avec tous les mêmes comportements qu'une fonction, puis introduire Dynamic SQL dans le mix?
- Pouvez-vous imaginer essayer d'appliquer MVCC (Multiversion Concurrecy Control) contre Dynamic SQL après avoir appliqué MVCC à la table de base à laquelle le déclencheur était destiné?
Vous auriez essentiellement des données qui croissent de façon quadratique (même exponentielle) uniquement dans MVCC seul. Le processus de gestion de la restauration de SQL avec des déclencheurs qui peuvent être non DETERMINISTIQUES serait pour le moins complexe et impie.
À la lumière de ces deux aspects, je suis sûr que les développeurs MySQL ont pensé à ces choses et les ont rapidement rejetées en imposant des restrictions.
Alors, pourquoi lever la restriction des procédures? Autrement dit, il n'y a aucune préoccupation concernant les propriétés DETERMINISTIQUES ou Rollback.