Sie können den Standardwert einer Spalte in einer UltraLite-Datenbank mit dem Typ GLOBAL AUTOINCREMENT deklarieren. Bevor Sie allerdings diese Spalten-IDs autoinkrementieren können, müssen Sie die globale ID für den entfernten UltraLite-Client einrichten.
Global autoincrement-Spaltenwerte, die über die MobiLink-Synchronisation heruntergeladen wurden, aktualisieren den global autoincrement-Wertzähler nicht. Daher kann ein Fehler auftreten, wenn ein MobiLink-Client einen Wert einfügt, der im Wertebereich eines anderen Clients liegt. Um dieses Problem zu vermeiden, stellen Sie sicher, dass jede Kopie Ihrer UltraLite-Anwendung nur Werte in ihrem eigenen Wertebereich einfügt.
Ordnen Sie jeder Kopie der Datenbank eine eindeutige globale ID-Nummer zu.
Die Datenbankoption "global_database_id" stellt den Wert in Ihrer UltraLite-Datenbank ein. Wenn Sie das Deployment von UltraLite durchführen, müssen Sie jeder Datenbank eine andere Identifizierungsnummer zuordnen. Weitere Hinweise finden Sie unter UltraLite global_database_id-Option.
UltraLite stellt dann Standardwerte für die Spalte bereit, die aus dem Wertebereich stammen, der durch die Nummer der UltraLite-Datenbank bestimmt wird. UltraLite folgt diesen Regeln:
Wenn die Spalte keine Werte aus dem aktuellen Wertebereich enthält, ist der erste Standardwert pn + 1, wobei p für die Partitionsgröße und n für den Wert der globalen ID-Nummer steht.
Wenn die Spalte bereits Werte im aktuellen Wertebereich enthält, die alle kleiner als p(n + 1) sind, wird der nächste Standardwert um eins größer als der bisherige Höchstwert in diesem Bereich.
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 Sie Ihrer UltraLite-Datenbank beispielsweise die globale ID 1 zugeordnet haben und die Partitionsgröße 1000 ist, werden die Standardwerte in dieser Datenbank aus dem Bereich 1001–2000 ausgewählt. Eine andere Kopie der Datenbank mit der Kennnummer 2 liefert Standardwerte für dieselbe Spalte im Bereich 2001–3000.
Da Sie die globale ID-Nummer nicht auf negative Werte setzen können, sind die von UltraLite für global autoincrement-Spalten gewählten Werte immer positiv. Die maximale Identifizierungsnummer wird nur durch den Spaltendatentyp und die Partitionsgröße beschränkt.
Wenn Sie keinen globalen ID-Wert einrichten oder die Werte aus der Partition erschöpft sind, wird NULL in die Spalte eingefügt. Falls NULL nicht zulässig ist, bewirkt der Versuch einer Einfügung in die Zeile einen Fehler.
Wenn die verfügbaren Werte für die als GLOBAL AUTOINCREMENT deklarierten Spalten aufgebraucht sind oder bald aufgebraucht sein werden, müssen Sie eine neue globale ID einstellen. UltraLite wählt die Werte für GLOBAL AUTOINCREMENT aus dem Wertebereich, der durch die globale ID-Nummer angegeben wird, jedoch nur solange, bis der Maximalwert erreicht ist. Wenn die Werte erschöpft sind, beginnt UltraLite mit der Generierung von NULL. Durch die Zuweisung einer neuen globalen ID-Nummer ermöglichen Sie es UltraLite, geeignete Werte aus einem anderen Wertebereich zu benutzen..
Eine Methode für die Auswahl einer neuen globalen ID-Nummer besteht darin, einen Pool von nicht benutzten globalen ID-Werten einzurichten. Dieser Pool wird auf dieselbe Weise wie ein Pool von Primärschlüsseln verwaltet. Weitere Hinweise finden Sie unter Primärschlüsselpools verwenden.
Die UltraLite-APIs bieten die Möglichkeit, den Anteil der bereits verwendeten Nummern festzustellen. Der Rückgabewert ist ein SHORT-Datentyp im Bereich 0–100, der die Prozentwerte der bislang verwendeten Anzahl von Nummern angibt. Beispiel: Der Wert "99" zeigt an, dass nur sehr wenige noch nicht verwendete Nummern übrig sind und der Datenbank eine neue Identifizierungsnummer zugewiesen werden sollte. Die Methode, diese Identifizierungsnummer festzulegen, hängt davon ab, welche Programmierschnittstelle Sie verwenden.
Kommentieren Sie diese Seite in DocCommentXchange. Senden Sie uns Feedback über diese Seite via E-Mail. |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |