- Catégories :
REFERENTIAL_INTEGRITY_COUNT (fonction de métrique des données système)¶
Renvoie le nombre de lignes de la table source pour lesquelles la valeur de la colonne ne correspond pas à la table référencée. Ces lignes sans correspondance sont connues sous le nom de lignes orphelines et représentent des violations de l’intégrité référentielle.
Si vous spécifiez plus d’un argument de colonne, renvoie le nombre de lignes pour lesquelles la combinaison des colonnes sources spécifiées ne correspond à aucune ligne de la table référencée, en fonction des colonnes de référence correspondantes.
Syntaxe¶
Pour les clés composées (multicolonnes) :
Arguments¶
columnIndique une ou plusieurs colonnes de la table source dont les valeurs sont vérifiées pour l’intégrité référentielle par rapport à la table référencée. Lorsque plusieurs colonnes sources sont spécifiées, elles forment une clé composée.
TABLE(ref_table(ref_column))Spécifie la table référencée (parent) et la ou les colonne(s) à utiliser pour la validation, en utilisant la syntaxe
TABLE(...):ref_table— Nom complet de la table référencée (par exemple,``my_db.my_schema.my_table``).ref_column— Une ou plusieurs colonnes de la table référencée qui correspondent aux colonnes sources.
Le nombre et l’ordre des colonnes sources doivent correspondre au nombre et à l’ordre des colonnes de référence.
Types de données autorisés¶
Les colonnes spécifiées dans les arguments column et ref_column peuvent contenir l’un des types de données suivants :
DATE
FLOAT
NUMBER
TIMESTAMP_LTZ
TIMESTAMP_NTZ
TIMESTAMP_TZ
VARCHAR
Renvoie¶
La fonction renvoie une valeur NUMBER.
Une valeur de retour 0 signifie que chaque ligne de la table source a une correspondance dans la table référencée. L’intégrité référentielle est entièrement satisfaite.
Une valeur de retour de N > 0 signifie qu’il y a N lignes de la table source qui n’ont pas de ligne correspondante dans la table référencée. Ces N lignes sont considérées comme orphelines.
Notes sur l’utilisation¶
Vous ne pouvez pas appeler cette fonction directement. Pour savoir comment associer la fonction à une table ou à une vue afin qu’elle s’exécute à intervalles réguliers, voir Associer une DMF. Vous pouvez utiliser la fonction SYSTEM$DATA_METRIC_SCAN pour exécuter la fonction REFERENTIAL_INTEGRITY_COUNT avec une table sans l’associer.
Les valeurs NULL de la colonne source ne sont pas comptabilisées comme des violations. Les lignes où la valeur de la colonne source est NULL sont exclues du contrôle d’intégrité référentielle. Cela suit la sémantique standard des contraintes de clé étrangère (FK), selon laquelle une clé étrangère NULL est considérée comme valide. Si vous devez surveiller les valeurs NULL dans la colonne source, utilisez la DMF NULL_COUNT en complément de cette fonction.
Le nombre et l’ordre des colonnes sources doivent correspondre aux colonnes de référence. Ceci est validé lorsque vous associez la fonction.
Renommer une colonne spécifiée dans la fonction REFERENTIAL_INTEGRITY_COUNT rompt l’association entre la fonction et la table ou la vue de la colonne. Si vous renommez la colonne, vous devez réassocier la fonction à la table ou à la vue.
Vous ne pouvez pas associer cette fonction à la même combinaison colonne/table de référence plus d’une fois.
Exemples¶
Contrôle d’intégrité référentielle à une seule colonne¶
Associez la fonction à la table salesorders, de sorte qu’elle renvoie le nombre de lignes où sp_id n’existe pas dans la colonne sp_id de la table salespeople :
Contrôle de l’intégrité référentielle de la clé composée¶
Associez la fonction à la table order_items, de sorte qu’elle renvoie le nombre de lignes où la combinaison de order_id et product_id n’a pas de ligne correspondante dans la table order_products :
Supprimer l’association¶
Supprimez le contrôle d’intégrité référentielle de la table salesorders :
Associer à une attente¶
Associez la fonction et définissez une attente selon laquelle l’intégrité référentielle doit être entièrement satisfaite (zéro ligne orpheline) :
Ajouter une attente à une association existante¶
Si la DMF est déjà associée ; ajoutez une attente en utilisant MODIFY :