- Kategorien:
REFERENTIAL_INTEGRITY_COUNT (System-Datenmetrikfunktion)¶
Gibt die Anzahl der Zeilen in der Quelltabelle zurück, bei denen für den Spaltenwert keine entsprechende Übereinstimmung in der referenzierten Tabelle vorhanden ist. Diese nicht übereinstimmenden Zeilen werden als verwaiste Zeilen bezeichnet und stellen Verstöße gegen die referenzielle Integrität dar.
Wenn Sie mehr als ein Spaltenargument angeben, wird die Anzahl der Zeilen zurückgegeben, in denen die Kombination der angegebenen Quellspalten mit keiner Zeile in der referenzierten Tabelle basierend auf den entsprechenden Referenzspalten übereinstimmt.
Syntax¶
Für zusammengesetzte (mehrspaltige) Schlüssel:
Argumente¶
columnGibt eine oder mehrere Spalten in der Quelltabelle an, deren Werte auf referenzielle Integrität mit der referenzierten Tabelle überprüft werden. Wenn mehrere Quellspalten angegeben werden, bilden sie einen zusammengesetzten Schlüssel.
TABLE(ref_table(ref_column))Gibt die referenzierte (übergeordnete) Tabelle und Spalte(n) an, anhand derer unter Verwendung der
TABLE(...)-Syntax validiert werden soll:ref_table– Der vollqualifizierte Name der referenzierten Tabelle (z. B.my_db.my_schema.my_table).ref_column– Eine oder mehrere Spalten in der referenzierten Tabelle, die den Quellspalten entsprechen.
Die Anzahl und Reihenfolge der Quellspalten muss mit der Anzahl und Reihenfolge der Referenzspalten übereinstimmen.
Zulässige Datentypen¶
Die in den Argumenten column und ref_column angegebenen Spalten können die folgenden Datentypen enthalten:
DATE
FLOAT
NUMBER
TIMESTAMP_LTZ
TIMESTAMP_NTZ
TIMESTAMP_TZ
VARCHAR
Rückgabewerte¶
Die Funktion gibt einen NUMBER-Wert zurück.
Ein Rückgabewert von 0 bedeutet, dass jede Zeile in der Quelltabelle eine entsprechende Übereinstimmung in der referenzierten Tabelle hat. Die referenzielle Integrität ist vollständig erfüllt.
Ein Rückgabewert von N > 0 bedeutet, dass es N Zeilen in der Quelltabelle gibt, für die in der referenzierten Tabelle keine übereinstimmende Zeile vorhanden ist. Diese N Zeilen gelten als verwaist.
Nutzungshinweise¶
Sie können diese Funktion nicht direkt aufrufen. Wie Sie die Funktion mit einer Tabelle oder Ansicht verknüpfen, sodass sie in regelmäßigen Abständen ausgeführt wird, erfahren Sie unter Verknüpfen einer DMF. Sie können die SYSTEM$DATA_METRIC_SCAN-Funktion verwenden, um die REFERENTIAL_INTEGRITY_COUNT-Funktion für eine Tabelle auszuführen, ohne sie zu verknüpfen.
NULL-Werte in der Quellspalte werden nicht als Verstöße angesehen. Zeilen, in denen der Wert der Quellspalte NULL ist, sind von der Prüfung der referenziellen Integrität ausgeschlossen. Dies folgt der Standard-Einschränkungssemantik für Fremdschlüssel (FK), wobei ein NULL-Fremdschlüssel als gültig angesehen wird. Wenn Sie NULL-Werte in der Quellspalte überwachen müssen, verwenden Sie :doc:`NULL_COUNT</sql-reference/functions/dmf_null_count>`DMF zusätzlich zu dieser Funktion.
Die Anzahl und Reihenfolge der Quellspalten muss mit den Referenzspalten übereinstimmen. Dies wird validiert, wenn Sie die Funktion zuordnen.
Durch das Umbenennen einer Spalte, die in der REFERENTIAL_INTEGRITY_COUNT-Funktion angegeben ist, wird die Zuordnung zwischen der Funktion und der Tabelle oder Ansicht der Spalte unterbrochen. Wenn Sie die Spalte umbenennen, müssen Sie die Funktion neu zu der Tabelle oder Ansicht zuordnen.
Sie können diese Funktion nicht mehr als einmal mit derselben Kombination aus Spalte und Referenztabelle verknüpfen.
Beispiele¶
Einspaltige referenzielle Integritätsprüfung¶
Verknüpfen Sie die Funktion mit der Tabelle salesorders, sodass sie die Anzahl der Zeilen zurück, in denen``sp_id`` nicht in der sp_id-Spalte der Tabelle salespeople existiert:
Überprüfung der referenziellen Integrität von zusammengesetzten Schlüsseln¶
Verknüpfen Sie die Funktion mit der Tabelle order_items, sodass sie die Anzahl der Zeilen zurückgibt, in denen die Kombination aus order_id und product_id keine übereinstimmende Zeile in der Tabelle order_products hat:
Löschen der Verknüpfung¶
Entfernen Sie die referenzielle Integritätsprüfung aus der Tabelle salesorders:
Verknüpfen mit einer Erwartung¶
Verknüpfen Sie die Funktion und definieren Sie eine Erwartung, dass die referenzielle Integrität vollständig erfüllt sein sollte (null verwaiste Zeilen):
Eine Erwartung zu einer bestehenden Zuordnung hinzufügen¶
Wenn DMF bereits zugeordnet ist, fügen Sie mit MODIFY eine Erwartung hinzu: