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

SQL Anywhere 12.0.0 (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. Siehe Entitäts- und referenzielle Integrität erzwingen.

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
    );

 Siehe auch

Einfügefehler