Heim  >  Artikel  >  Datenbank  >  Wie überprüfe ich die referenzielle Integrität in InnoDB-Tabellen nach Massendatenänderungen?

Wie überprüfe ich die referenzielle Integrität in InnoDB-Tabellen nach Massendatenänderungen?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-20 16:15:18687Durchsuche

How to Verify Referential Integrity in InnoDB Tables After Bulk Data Modifications?

Durchsetzung der referenziellen Integrität in InnoDB-Tabellen

Fremdschlüsseleinschränkungen in InnoDB-Tabellen gewährleisten die Datenintegrität, indem sie das Löschen referenzierter Datensätze verhindern. Nach Massendatenänderungen kann es jedoch erforderlich sein, zu überprüfen, ob die Fremdschlüsseleinschränkungen noch intakt sind.

InnoDB bietet keine integrierte Methode, um eine erneute Überprüfung der Fremdschlüssel zu erzwingen. Es kann jedoch eine benutzerdefinierte gespeicherte SQL-Prozedur erstellt werden, um diese Aufgabe auszuführen.

Benutzerdefinierte gespeicherte SQL-Prozedur

Die folgende gespeicherte Prozedur, ANALYZE_INVALID_FOREIGN_KEYS, kann zur Analyse aller verwendet werden Tabellen innerhalb einer Datenbank und identifizieren alle ungültigen Fremdwörter Schlüssel:

DELIMITER $$

DROP PROCEDURE IF EXISTS ANALYZE_INVALID_FOREIGN_KEYS$$

CREATE
    PROCEDURE `ANALYZE_INVALID_FOREIGN_KEYS`(
        checked_database_name VARCHAR(64), 
        checked_table_name VARCHAR(64), 
        temporary_result_table ENUM('Y', 'N'))

    LANGUAGE SQL
    NOT DETERMINISTIC
    READS SQL DATA

    BEGIN
        -- ... (stored procedure code) ...
    END$$
DELIMITER ;

Verwendung

Um die gespeicherte Prozedur zu verwenden, führen Sie die folgende Abfrage aus:

CALL ANALYZE_INVALID_FOREIGN_KEYS('%', '%', 'Y');

Dadurch werden alle Tabellen analysiert die aktuelle Datenbank und speichert alle ungültigen Fremdschlüsselverletzungen in einer temporären Tabelle mit dem Namen INVALID_FOREIGN_KEYS.

Ergebnisse interpretieren

Die Tabelle INVALID_FOREIGN_KEYS enthält die folgenden Informationen für jeden ungültigen Fremdschlüssel:

  • TABLE_SCHEMA: Der Datenbankname des Verstoßes Tabelle.
  • TABLE_NAME: Der Name der verletzenden Tabelle.
  • COLUMN_NAME: Der Name der verletzenden Spalte.
  • CONSTRAINT_NAME: Der Name der Fremdschlüsseleinschränkung.
  • REFERENCED_TABLE_SCHEMA: Der Datenbankname des Referenzierten Tabelle.
  • REFERENCED_TABLE_NAME: Der Name der referenzierten Tabelle.
  • REFERENCED_COLUMN_NAME: Der Name der referenzierten Spalte.
  • INVALID_KEY_COUNT: Die Anzahl ungültiger Fremdschlüsselreferenzen.
  • INVALID_KEY_SQL: Eine SQL-Abfrage, die verwendet werden kann um die ungültigen Zeilen abzurufen.

EINSCHRÄNKUNGEN

Beachten Sie, dass dieses Verfahren die folgenden Einschränkungen aufweist:

  • Es führt keine Prüfung durch für selbstreferenzielle Fremdschlüsseleinschränkungen.
  • Für optimale Ergebnisse sind Indizes sowohl für die verweisenden als auch für die referenzierten Spalten erforderlich Leistung.
  • Bei großen Datenbanken kann die Ausführung viel Zeit in Anspruch nehmen.

Das obige ist der detaillierte Inhalt vonWie überprüfe ich die referenzielle Integrität in InnoDB-Tabellen nach Massendatenänderungen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn