CODE RETOUR -478

ALTER, DROP, OR REVOKE AFFECTING OBJECT TYPE  object-type CANNOT BE PROCESSED BECAUSE OBJECT  dependent-object OF TYPE dependent-type IS DEPENDENT ON IT

Explication
Une instruction ALTER, DROP ou REVOKE a été émise sur un type d’objet qui est une dépendance pour un ou plusieurs objets. Un type d’objet ne peut pas être supprimé ou révoqué si un autre type d’objet a une dépendance sur ce type d’objet.

object-type
Le type d’objet qui est requis et ne peut pas être supprimé.
dependent-object
Le nom de l’objet qui empêche le type d’objet d’être supprimé ou révoqué.
dependent-type
Le type de l’objet qui empêche le type d’objet d’être supprimé ou révoqué.

Des exemples d’où la dépendance peut se produire incluent les situations suivantes :

Instruction ALTER ou DROP

Pour une instruction ALTER ou DROP, les dépendances suivantes peuvent exister en fonction de la valeur object-type .

  • Si object-type est ALIAS :
    • Une autorisation de ligne ou un masque de colonne référence cet alias. Cela ne se produira que lorsque l’alias est un alias pour une table ou une vue.
    • Il existe une fonction SQL en ligne qui utilise la séquence dans une expression NEXT VALUE ou PREVIOUS VALUE. Cela ne se produira que lorsque l’alias est un alias pour une séquence.
  • Si le object-type est COLUMN:
    • Un index référence cette colonne.
    • Une contrainte d’unicité fait référence à cette colonne.
    • Vue qui référence directement ou indirectement cette colonne.
    • Une contrainte référentielle qui référence cette colonne en tant que clé étrangère.
  • Si le object-type est ARRAY :
    • Une fonction ou une procédure stockée utilise le type de tableau défini par l’utilisateur.
  • Si le object-type est TYPE DISTINCT :
    • Une colonne d’une table est définie comme ce type distinct.
    • Un paramètre ou une variable SQL d’une fonction est défini comme ce type distinct.
    • Un paramètre ou une variable SQL d’une procédure est défini comme ce type distinct.
    • Une séquence est définie avec ce type distinct comme type de données.

La dépendance peut être sur l’une des fonctions de distribution générées pour un type distinct.

  • Si le object-type est FUNCTION :
    • Une autorisation de ligne ou un masque de colonne référence cette fonction.
    • Une autre fonction est sourcée sur cette fonction.
    • Une vue utilise cette fonction.
    • Un package de déclenchement utilise cette fonction.
    • Une table utilise cette fonction dans une contrainte de vérification ou une valeur par défaut définie par l’utilisateur.
    • Une définition de table de requête matérialisée utilise cette fonction.
  • Si le object-type est JAR :
    • Une fonction ou une procédure stockée utilise ce JAR dans son NOM EXTERNE.
    • Un autre JAR utilise ce JAR dans son chemin Java™.
  • Si le object-type est ROLE :
    • Un contexte de confiance utilise ce rôle.
    • Le rôle est associé au thread actuel.
    • Le rôle est le propriétaire de l’objet qui est supprimé.
    • Le rôle est le concédant des droits ACCESSCTRL, DATAACCESS ou DBADM système.
    • Le rôle est le concédant de tout privilège ou autorité qui a utilisé l’autorité ACCESSCTRL ou SECADM pour accorder l’octroi.

Dans le cas où object-type est ROLE, cette erreur peut également se produire lors de la révocation des privilèges détenus par ce rôle. Lorsque les privilèges de rôle sont révoqués, la mise en cascade de l’instruction REVOKE peut rencontrer des dépendances qui empêchent le traitement de l’instruction REVOKE.

  • Si le object-type est SEQUENCE :
    • Une fonction SQL est définie qui référence cette séquence.
    • Une procédure SQL est définie qui référence cette séquence.
    • Une définition de vue est définie qui fait référence à cette séquence.
    • Un déclencheur est défini qui fait référence à cette séquence.
  • Si le object-type est SYNONYM :
    • Une autorisation de ligne ou un masque de colonne fait référence à ce synonyme.
  • Si le object-type est TABLE :
    • Une autorisation de ligne ou un masque de colonne fait référence à cette table.
    • Cette table est la table d’historique d’une table temporelle de période système. Une tentative de suppression de l’espace table ou de la base de données qui contient la table d’historique provoque également cette erreur.
    • Cette table est la table d’archivage d’une table activée pour l’archivage. Une tentative de suppression de l’espace table ou de la base de données qui contient la table d’archivage provoque également cette erreur.
  • Si le object-type est VIEW :
    • Une autorisation de ligne ou un masque de colonne référence cette vue.
  • Si object-type est une variable globale :
    • Une fonction SQL référence cette variable globale.
    • Une vue référence cette variable globale.
    • Un déclencheur référence cette variable globale.

Instruction REVOKE

Pour une instruction REVOKE, les dépendances suivantes peuvent exister en fonction de la valeur du object-type  .

  • SYSADM est en cours de révocation. Lorsque SYSADM est révoqué, la mise en cascade de l’instruction REVOKE peut rencontrer des dépendances qui empêchent le traitement de l’instruction REVOKE.
  • Si le object-type est ARRAY :
    • Une fonction ou une procédure stockée utilise le type de tableau défini par l’utilisateur.
  • Si le object-type est DISTINCT TYPE :
    • Une colonne d’une table appartenant au révoqué est définie comme ce type distinct.
    • Un paramètre ou une variable SQL d’une fonction appartenant au révoqué est défini comme ce type distinct.
    • Un paramètre ou une variable SQL d’une procédure appartenant au révoqué est défini comme ce type distinct.
    • Une séquence appartenant au révoqué est définie avec ce type distinct comme type de données.
  • Si le object-type est FUNCTION :
    • Une fonction détenue par le révoqué provient de cette fonction.
    • Une vue détenue par le révoqué utilise cette fonction.
    • Un package de déclencheur appartenant au révoqué utilise cette fonction.
    • Une table appartenant au révoqué utilise cette fonction dans une contrainte de vérification ou une valeur par défaut définie par l’utilisateur.
    • Une table de requête matérialisée appartenant au révoqué utilise cette fonction dans la définition.
    • Un index qui appartient au révoqué utilise cette fonction.
  • Si le object-type est JAR :
    • Une fonction ou une procédure stockée appartenant au révoqué utilise ce JAR dans son EXTERNAL NAME.
    • Un autre JAR appartenant au révoqué utilise ce JAR dans son chemin Java.
  • Si le object-type est PROCEDURE :
    • Une définition de déclencheur appartenant au révoqué contient une instruction CALL avec le nom de cette procédure stockée.
  • Si le object-type est SEQUENCE :
    • Une fonction SQL est définie qui référence cette séquence.
    • Une procédure SQL est définie qui référence cette séquence.
    • Une définition de vue est définie qui fait référence à cette séquence.
    • Un déclencheur est défini qui fait référence à cette séquence.
  • Si object-type est une variable globale :
    • Une fonction détenue par le révoqué fait référence à cette variable globale.
    • Une vue détenue par le révoqué fait référence à cette variable globale.
    • Un déclencheur appartenant au révoqué fait référence à cette variable globale.

Action du système
L’instruction ne peut pas être traitée.

Réponse du programmeur
Supprimez les dépendances sur cet objet. Par exemple, supprimez l’objet identifié par dépendant-objet. Ensuite, relancez la demande.

SQLSTATE
Le SQLSTATE dépend des valeurs de type d’objet et de type dépendant :

ValuesSQLSTATE
object-type: JARdependent-type: FUNCTION or PROCEDURE46003
object-type: JARdependent-type: JAR4600C
All other cases42893