Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie wird die Fremdschlüsselbeschränkung über verschiedene Datenbanken hinweg beibehalten?

Ich kann mir keine Möglichkeit vorstellen, dies mit Standard-MySQL zu tun.

Sie könnten ein Plugin für MySQL Proxy schreiben , das die referenzielle Integrität zwischen den übergeordneten und untergeordneten Tabellen auf verschiedenen Servern verwaltet:

  • INSERT abfangen und UPDATE gegen Kindertisch. Abfrage nach übereinstimmender Zeile in der übergeordneten Tabelle. Fehler bei INSERT /UPDATE wenn keine Übereinstimmung in der übergeordneten Tabelle gefunden wird.

  • DELETE abfangen gegen die übergeordnete Tabelle. Abfrage nach abhängigen Zeilen in untergeordneter Tabelle. Fehler DELETE wenn abhängige Zeilen in der untergeordneten Tabelle gefunden werden. Wenn die Einschränkung kaskadierendes Verhalten unterstützen soll, tun Sie dies, anstatt zu scheitern.

  • UPDATE abfangen gegen die übergeordnete Tabelle. Wenn sich der Primärschlüsselwert im Rahmen der Aktualisierung ändert, suchen Sie nach abhängigen Zeilen, die in der untergeordneten Tabelle gefunden wurden. UPDATE fehlschlagen wenn abhängige Zeilen in der untergeordneten Tabelle gefunden werden. Wenn die Einschränkung kaskadierendes Verhalten unterstützen soll, tun Sie dies, anstatt zu scheitern.

Beachten Sie, dass Sie Informationen über die Einschränkungen der referenziellen Integrität in Ihrem MySQL-Proxy-Plugin aufbewahren müssen (oder eine benutzerdefinierte Konfigurationsdatei für Ihr Plugin schreiben müssen, die die Beziehungen aufzeichnet). Sie können keinen herkömmlichen FOREIGN KEY verwenden Syntax, um solche Einschränkungen über MySQL-Instanzen hinweg zu deklarieren.