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

SQL Anywhere 11.0.1 (Deutsch) » SQL Anywhere Server - SQL-Benutzerhandbuch » Datenbanken erstellen » Datenintegrität gewährleisten » Entitäts- und referenzielle Integrität erzwingen » Referenzielle Integrität prüfen

 

Integritätsprüfungen bei INSERT

SQL Anywhere führt Integritätsprüfungen während der Ausführung von INSERT-Anweisungen durch. Beispiel: Sie möchten eine Abteilung erstellen, geben jedoch einen bereits verwendeten Wert in "DepartmentID" ein:

INSERT
INTO Departments ( DepartmentID, DepartmentName, DepartmentHeadID )
VALUES ( 200, 'Eastern Sales', 902 );

Die INSERT-Anweisung wird zurückgewiesen, weil der Primärschlüssel für die Tabelle nicht mehr eindeutig wäre. Da es sich bei der Spalte "DepartmentID" um einen Primärschlüssel handelt, sind doppelte Werte in diesem Feld nicht zulässig.

Werte einfügen, die Beziehungen verletzen

Folgende Anweisung fügt eine neue Zeile in die Tabelle "SalesOrders" ein. Sie enthält aber fälschlicherweise eine "SalesRepresentative ID", die in der Tabelle "Employees" nicht vorhanden ist.

INSERT
INTO SalesOrders ( ID, CustomerID, OrderDate, SalesRepresentative)
VALUES ( 2700, 186, '2000-10-19', 284 );

Zwischen den Tabellen "Employees" und "SalesOrders" gibt es eine "Eins-zu-viele-Beziehung", die auf der Spalte "SalesRepresentative" in der Tabelle "SalesOrders" und der Spalte "EmployeeID" in der Tabelle "Employees" basiert. Erst, nachdem ein Datensatz in der Primärtabelle (Employees) eingegeben wurde, kann ein entsprechender Datensatz in der Fremdtabelle (SalesOrders) eingefügt werden.

Fremdschlüssel

Der Primärschlüssel für die Mitarbeitertabelle "Employees" ist die Mitarbeiter-ID. Die Verkäufer-ID in der Verkäufertabelle "SalesRepresentative" ist ein Fremdschlüssel für die Tabelle "Employees". Das heißt, dass jede Verkäufernummer in der Auftragstabelle "SalesOrders" mit einer Mitarbeiter-ID für einen Mitarbeiter in der Tabelle "Employees" übereinstimmen muss.

Wenn Sie versuchen, eine Bestellung für den Verkäufer 284 hinzuzufügen, erhalten Sie eine Fehlermeldung der Art: Kein Primärschlüsselwert für Fremdschlüssel 'FK_SalesRepresentative_EmployeeID' in Tabelle 'SalesOrders'.

In der Mitarbeitertabelle "Employees" ist kein Mitarbeiter mit dieser ID enthalten. Dies verhindert, dass Sie Bestellungen ohne eine gültige Handelsvertreter-ID einfügen.

Siehe auch