Jedes Mal, wenn ein entfernter Benutzer einen neuen Kunden hinzufügt, wird sein Pool an verfügbaren Primärschlüsseln um einen vermindert. Sie müssen regelmäßig den Inhalt der Primärschlüsselpool-Tabelle in der konsolidierten Datenbank auffüllen und die neuen Primärschlüssel an die entfernten Datenbanken replizieren.
In der konsolidierten Datenbank erstellen Sie eine Prozedur, um den Primärschlüsselpool zu füllen.
Sie können keinen Trigger verwenden, um den Primärschlüsselpool anzufüllen, da Triggeraktionen nicht repliziert werden.
Zum Beispiel:
CREATE PROCEDURE ReplenishPool() BEGIN FOR EachTable AS TableCursor CURSOR FOR SELECT table_name AS CurrTable, max(value) as MaxValue FROM KeyPool GROUP BY table_name DO FOR EachRep AS RepCursor CURSOR FOR SELECT location AS CurrRep, COUNT(*) AS NumValues FROM KeyPool WHERE table_name = CurrTable GROUP BY location DO // make sure there are 100 values. // Fit the top-up value to your // requirements WHILE NumValues < 100 LOOP SET MaxValue = MaxValue + 1; SET NumValues = NumValues + 1; INSERT INTO KeyPool (table_name, location, value) VALUES (CurrTable, CurrRep, MaxValue); END LOOP; END FOR; END FOR; END; |
Fügen Sie einen ersten Primärschlüsselwert in den Primärschlüsselpool für jeden Benutzer ein.
Die ReplenishPool-Prozedur verlangt, dass es zumindest einen Primärschlüssel für jeden Subskribenten geben muss, damit sie den Höchstwert bestimmen und eins hinzufügen kann, um die nächste Menge zu erzeugen.
Um den Pool anfänglich zu füllen, fügen Sie einen einzelnen Wert für jeden Benutzer ein und rufen dann ReplenishPool auf, um den Rest aufzufüllen. Das folgende Beispiel zeigt dies für drei entfernte Benutzer und einen einzigen konsolidierten Benutzer namens Office:
INSERT INTO KeyPool VALUES( 'Customers', 40, 'user1' ); INSERT INTO KeyPool VALUES( 'Customers', 41, 'user2' ); INSERT INTO KeyPool VALUES( 'Customers', 42, 'user3' ); INSERT INTO KeyPool VALUES( 'Customers', 43, 'Office'); CALL ReplenishPool(); |
Die ReplenishPool-Prozedur füllt den Pool für jeden Benutzer mit bis zu 100 Werten an. Der benötigte Wert hängt davon ab, wie oft Benutzer Zeilen in die Tabellen der Datenbank einfügen.
Führen Sie ReplenishPool regelmäßig aus.
Die ReplenishPool-Prozedur muss in der konsolidierten Datenbank regelmäßig ausgeführt werden, um den Pool von Primärschlüsselwerten in der KeyPool-Tabelle wieder aufzufüllen.
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2010, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.0 |