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) » MobiLink - Serveradministration » MobiLink-Servertechnologie verwenden » Synchronisationsmethoden » Eindeutige Primärschlüssel aufrechterhalten » Global Autoincrement verwenden

 

Globale Datenbank-ID festlegen

Wenn Sie das Deployment für eine Anwendung durchführen, müssen Sie jeder Datenbank eine andere Identifizierungsnummer zuordnen. Es gibt mehrere Möglichkeiten, die Kennnummern zu erstellen und zu verteilen. Eine Methode besteht darin, die Werte in eine Tabelle zu platzieren und die entsprechende Zeile beim Download in die einzelnen Datenbanken anhand einer anderen eindeutigen Eigenschaft zuzuordnen, wie zum Beispiel einer entfernten ID.

♦  So legen Sie die globale Datenbank-Identifizierungsnummer fest
So werden Standardwerte gewählt

Die globale Datenbank-ID wird in SQL Anywhere mit der öffentlichen Option global_database_id festgelegt, in UltraLite mit der Option global_id.

Die Option global_database_id muss in jeder Datenbank als eindeutige, positive Ganzzahl eingestellt sein. Der Bereich von Standardwerten für eine bestimmte Tabelle liegt zwischen pn+ 1 und p(n + 1), wobei p die Partitionsgröße und n der Wert der globalen Datenbank-ID ist. Wenn zum Beispiel die Partitionsgröße 1000 ist und die globale Datenbank-ID den Wert 3 hat, liegt der Bereich zwischen 3001 und 4000.

SQL Anywhere und UltraLite wählen Standardwerte anhand folgender Regeln:

  • Wenn die Spalte in der aktuellen Partition keine Werte enthält, ist der erste Standardwert pn + 1, wobei p für die Partitionsgröße und n für den Wert der globalen Datenbank-ID steht.

  • Wenn die Spalte in der aktuellen Partition Werte enthält, die alle weniger als p(n + 1) betragen, wird der nächste Standardwert um eins größer als der vorherige Höchstwert in diesem Bereich sein.

  • Standardspaltenwerte sind von Werten, die sich außerhalb der aktuellen Partition befinden, nicht betroffen, d.h. von Nummern kleiner als pn+ 1 oder größer als p(n + 1). Solche Werte können vorhanden sein, wenn sie von einer anderen Datenbank über MobiLink-Synchronisation repliziert wurden.

Wenn die globale Datenbank-ID auf den Standardwert 2147483647 gesetzt ist, wird NULL in die Spalte eingetragen. Falls NULL nicht zulässig ist, wird durch den Einfügeversuch ein Fehler verursacht. Dies geschieht etwa, wenn die Spalte im Primärschlüssel der Tabelle enthalten ist.

Da die globale Datenbank-ID kein negativer Wert sein darf, sind die gewählten Werte immer positiv. Die maximale Identifizierungsnummer wird nur durch den Spaltendatentyp und die Partitionsgröße beschränkt.

Null-Standardwerte werden auch generiert, wenn der Vorrat von Werten innerhalb der Partition aufgebraucht ist. In diesem Fall sollte der Datenbank eine neue globale Datenbank-ID zugewiesen werden, damit Standardwerte aus einer anderen Partition gewählt werden können. Der Versuch, NULL einzufügen, bewirkt einen Fehler, wenn die Spalte NULL nicht zulässt. Um festzustellen, ob der Vorrat von ungenutzten Werten zu Ende geht, und um diese Situation zu beheben, erstellen Sie ein Ereignis vom Typ GlobalAutoincrement.

Sollten die Werte in einer bestimmten Partition zu Ende gehen, können Sie dieser Datenbank eine neue globale Datenbank-ID zuordnen. Sie können neue Datenbank-Identifizierungsnummern auf verschiedene Arten zuordnen. Eine Möglichkeit ist, einen Pool von nicht benutzten Datenbank-ID-Werten einzurichten. Dieser Pool wird auf dieselbe Weise wie ein Pool von Primärschlüsseln verwaltet.

Sie können einen Event-Handler einstellen, um den Datenbankadministrator automatisch zu benachrichtigen (oder um eine andere Aktion auszuführen), wenn die Partition beinahe aufgebraucht ist. Weitere Hinweise zu SQL Anywhere-Datenbanken finden Sie unter Triggerbedingungen für Ereignisse definieren.

Siehe auch
Beispiel

In SQL Anywhere setzt die folgende Anweisung die Datenbank-ID auf 20.

SET OPTION PUBLIC.global_database_id = 20

Wenn die Partitionsgröße für eine bestimmte Spalte 5000 beträgt, werden die Standardwerte für diese Datenbank aus dem Bereich 100001-105000 ausgewählt.