Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.1 (Deutsch) » SQL Remote » SQL Remote-Systeme erstellen

 

Fehler bei der referenziellen Integrität

Die Tabellen in einer relationalen Datenbank sind häufig durch Fremdschlüssel-Referenzen miteinander verknüpft. Das führt dazu, dass referenzielle Integritätsregeln sicherstellen, dass die Datenbank konsistent bleibt.

Wenn Sie nur einen Teil einer Datenbank replizieren, müssen Sie sicherstellen, dass die replizierte Datenbank weiterhin referenzielle Integrität hat.

Sie müssen versuchen, Fehler bei nicht-replizierten referenzierten Tabellen zu vermeiden. Ihre entfernten Datenbanken sollten keine Fremdschlüssel enthalten, die auf nicht-replizierte Tabellen zeigen.

Beispiel: In einer konsolidierten Datenbank hat die SalesOrders -Tabelle einen Fremdschlüssel zur Employees-Tabelle. SalesOrders.SalesRepresentative ist der Fremdschlüssel, der den Primärschlüssel Employees.EmployeeID referenziert.

Entity-Relationship-Diagramm der Beispieldatenbank.

Eine Publikation, PubSales, wird erstellt, die die Employees-Tabelle ausschließt, aber die gesamte SalesOrder-Tabelle umfasst.

CREATE PUBLICATION PubSales (
   TABLE Customers,
   TABLE SalesOrders,
   TABLE SalesOrderItems,
 );

Ein entfernter Benutzer, Rep1, subskribiert die PubSales-Publikation. Anschließend extrahieren Sie Rep1 aus der konsolidierten Datenbank und versuchen, eine Datenbank für Rep1 zu erstellen. Die Datenbankerstellung schlägt allerdings fehl, weil Rep1 die Employees-Tabelle fehlt. Um dieses Problem zu vermeiden, können Sie Folgendes durchführen:

  • Entfernen Sie die Fremdschlüssel-Referenz   Um Fremdschlüssel-Referenzen auszuschließen, geben Sie die Option -xf an, wenn Sie das Extraktionsdienstprogramm (dbxtract) verwenden.

    Wenn Sie allerdings die Fremdschlüssel-Referenz aus der entfernten Datenbank entfernen, gibt es keine Integritätsregel in der entfernten Datenbank, um zu verhindern, dass ein ungültiger Wert in die SalesRepresentative-Spalte der SalesOrders-Tabelle eingefügt wird.

    Wenn ein ungültiger Wert in die SalesRepresentative-Spalte in der entfernten Datenbank eingefügt wird, schlägt die replizierte INSERT-Anweisung in der konsolidierten Datenbank fehl.

  • Beziehen Sie die fehlende Tabelle in die Publikation ein   Nehmen Sie die Employees-Tabelle (oder zumindest ihren Primärschlüssel) in die Publikation auf. Zum Beispiel:
    CREATE PUBLICATION PubSales (
       TABLE Customers,
       TABLE SalesOrders,
       TABLE SalesOrderItems,
       TABLE Products,
       TABLE Employees
    );

 Weitere Hinweise finden Sie auch unter

Einfügefehler