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 Anywhere Server - SQL-Benutzerhandbuch » Datenintegrität » Spalten-Standardwerte

 

Der Standardwert GLOBAL AUTOINCREMENT

Der Standardwert GLOBAL AUTOINCREMENT wird eingesetzt, wenn mehrere Datenbanken in einer SQL Remote-Replikation oder in einer MobiLink-Synchronisationsumgebung verwendet werden. Er gewährleistet, dass Primärschlüssel in mehreren Datenbanken eindeutig sind.

Diese Option ähnelt AUTOINCREMENT, außer dass die Domäne partitioniert ist. Jede Teilmenge enthält dieselbe Anzahl von Werten. Sie ordnen jeder Kopie der Datenbank eine eindeutige Datenbank-Identifizierungsnummer zu. SQL Anywhere liefert Standardwerte in einer Datenbank nur von der Partition, die eindeutig durch diese Datenbanknummer gekennzeichnet ist.

Die Partitionsgröße kann jede positive Ganzzahl sein, obwohl dieser Wert normalerweise so eingeteilt wird, dass seine Größe kaum jemals überschritten werden kann.

Wenn die Spalte vom Typ BIGINT oder UNSIGNED BIGINT ist, beträgt die Standard-Partitionsgröße 232 = 4294967296. Bei Spalten aller anderen Typen ist der Standardwert 216 = 65536. Da diese Standardwerte nicht immer sinnvoll sind, vor allem wenn die Spalte nicht vom Typ INT oder BIGINT ist, empfiehlt es sich, die Partitionsgröße explizit festzulegen.

Wenn Sie diese Option verwenden, muss der Wert der öffentlichen Option "global_database_id" in jeder Datenbank auf eine eindeutige, nicht negative Ganzzahl gesetzt werden. Dieser Wert kennzeichnet die Datenbank eindeutig und zeigt an, von welcher Partition Standardwerte zugeordnet werden sollen. Der Bereich der zulässigen Werte geht von np + 1 bis (n + 1) p, wobei n der Wert der öffentlichen Option "global_database_id" und p die Partitionsgröße ist. Wenn Sie z.B. die Partitionsgröße 1000 festlegen und global_database_id auf 3 gesetzt ist, liegt der Bereich zwischen 3001 und 4000.

Wenn der vorherige Wert kleiner als (n+ 1) p ist, wird der nächste Standardwert um eins größer sein als der vorherige größte Wert in der Spalte. Wenn die Spalte keine Werte enthält, ist der erste Standardwert np + 1. Standardspaltenwerte sind von Werten, die sich außerhalb der aktuellen Partition befinden, nicht betroffen, d.h. von Nummern kleiner als np+ 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.

Da die öffentliche Option global_database_id nicht auf einen negativen Wert gesetzt werden kann, sind die ausgewählten Werte immer positiv. Die maximale Identifizierungsnummer wird nur durch den Spaltendatentyp und die Partitionsgröße beschränkt.

Wenn die öffentliche Option global_database_id auf den Standardwert 2147483647 gesetzt ist, wird NULL in die Spalte eingefügt. Falls NULL nicht zulässig ist, wird beim Versuch, die Zeile einzufügen, ein Fehler erzeugt. Dies geschieht etwa, wenn die Spalte im Primärschlüssel der Tabelle enthalten ist.

NULL-Standardwerte werden auch generiert, wenn der Vorrat von Werten innerhalb der Partition aufgebraucht ist. In diesem Fall sollte der Datenbank ein neuer global_database_id-Wert 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.

GLOBAL AUTOINCREMENT-Spalten sind typischerweise Primärschlüsselspalten oder Spalten, die auf eindeutige Werte beschränkt sind.

Es ist zwar möglich, auch in anderen Fällen den Standardwert GLOBAL AUTOINCREMENT zu verwenden, aber dies kann sich negativ auf die Datenbank-Performance auswirken. Beispiel: Wenn der nächste Wert für jede Spalte als Ganzzahl mit Vorzeichen (64 Byte) gespeichert wird, kann die Verwendung großer "double"- oder "numeric"-Werte oder die Verwendung von Werten größer als 231 -1 zur Umwandlung in negative Werte führen.

Sie können den zuletzt in eine AUTOINCREMENT-Spalte eingegebenen Wert mit der globalen Variable @@identity abrufen.

 Siehe auch