THE ACTIVATION OF THE object-type OBJECT object-name WOULD EXCEED THE MAXIMUM LEVEL OF INDIRECT SQL CASCADING
Explication :
La cascade de SQL indirect se produit lorsqu’un déclencheur (trigger), une fonction définie par l’utilisateur ou une procédure stockée appelle un autre déclencheur, une fonction définie par l’utilisateur ou une procédure stockée qui, à son tour, en appelle un autre. L’activation de certains des déclencheurs de cette chaîne peut être due à l’application de règles de suppression de contraintes référentielles. La profondeur de cette cascade est limitée à 16.
Notez que les situations récursives dans lesquelles un déclencheur inclut une instruction SQL déclenchée qui provoque directement ou indirectement l’activation du même déclencheur sont très susceptibles de provoquer cette erreur. Le déclencheur doit contenir une logique pour rechercher une condition de fin afin d’éviter cette erreur.
object-type
Nomme le type d’objet appelé. Le type d’objet est TRIGGER, FUNCTION ou PROCEDURE.
object-name
Spécifie le nom du déclencheur, de la fonction définie par l’utilisateur ou de la procédure stockée qui aurait été activé au dix-septième niveau de cascade.
Action du système :
L’instruction d’origine n’a pas pu être exécutée. Toutes les instructions SQL exécutées par tous les déclencheurs, les fonctions définies par l’utilisateur et les procédures stockées dans la chaîne en cascade sont annulées. Les actions externes effectuées par le SQL indirect, telles que l’envoi d’un message réseau, peuvent déjà avoir eu lieu.
Réponse du programmeur :
Commencez par le SQL indirect activé par l’opération SQL d’origine. Recherchez des modèles récursifs dans toutes les fonctions définies par l’utilisateur appelées ou dans tous les déclencheurs définis au sujet d’une opération de mise à jour. Si la chaîne n’est pas récursive, la chaîne en cascade doit être simplifiée en modifiant les déclencheurs, les fonctions définies par l’utilisateur ou les procédures stockées impliquées.
SQLSTATE :
54038