Erstellt eine Publikation In MobiLink kennzeichnet eine Publikation synchronisierte Daten in einer entfernten SQL Anywhere-Datenbank. In SQL Remote kennzeichnen Publikationen replizierte Daten sowohl in konsolidierten als auch in entfernten Datenbanken.
CREATE PUBLICATION [ IF NOT EXISTS ] [ owner. ] publication-name ( article-definition, ... )
article-definition : TABLE table-name [ ( column-name, ... ) ] [ WHERE search-condition ]
CREATE PUBLICATION [ IF NOT EXISTS ] [ owner.] WITH SCRIPTED UPLOAD ( article-definition, ... )
article-definition : TABLE table-name [ ( column-name, ... ) ] [ USING ( [ PROCEDURE ] [ owner.][procedure-name ] FOR UPLOAD { INSERT | DELETE | UPDATE }, ... ) ]
CREATE PUBLICATION [ IF NOT EXISTS ] [ owner.] publication-name FOR DOWNLOAD ONLY ( article-definition, ... )
article-definition : TABLE table-name [ ( column-name, ... ) ]
CREATE PUBLICATION [ IF NOT EXISTS ] [ owner.] publication-name ( article-definition, ... )
article-definition : TABLE table-name [ ( column-name, ... ) ] [ WHERE search-condition ] [ SUBSCRIBE BY expression ]
IF NOT EXISTS-Klausel Wenn die IF NOT EXISTS-Klausel angegeben wurde und die benannte Publikation bereits vorhanden ist, werden keine Änderungen vorgenommen und es wird kein Fehler zurückgegeben.
article-definition Publikationen werden aus Artikeln erstellt. Jeder Artikel kennzeichnet die Zeilen und Spalten einer einzelnen Tabelle, die in der Publikation enthalten sind. Eine Publikation kann nicht zwei Artikel enthalten, die sich auf dieselbe Tabelle beziehen.
Wenn eine Liste der Spaltennamen in den Artikel aufgenommen wird, sind nur die Spalten in der Publikation enthalten. Wenn keine Spaltennamen aufgelistet sind, werden alle Spalten in der Tabelle in die Publikation aufgenommen. Bei der MobiLink Synchronisation müssen, wenn die Spaltennamen aufgelistet werden, alle Spalten im Primärschlüssel der Tabelle in der Liste enthalten sein.
In Syntax 2, die für Publikationen verwendet wird, welche skriptgesteuerte Uploads durchführen, registriert die Artikeldefinition auch die Skripts, die für die Definition des Uploads verwendet werden.
In Syntax 3, die für reine Downloadpublikationen verwendet wird, gibt der Artikel nur die Tabellen und Spalten für den Download an.
WHERE-Klausel Mit der WHERE-Klausel können Sie die Teilmenge von Zeilen einer Tabelle definieren, die in einen Artikel aufgenommen werden soll.
In MobiLink-Anwendungen bezieht sich die WHERE-Klausel auf die im Upload enthaltenen Zeilen. (Der Download wird durch das download_cursor-Skript definiert.) In entfernten MobiLink SQL Anywhere-Datenbanken kann die WHERE-Klausel nur im Artikel enthaltene Spalten referenzieren und darf keine Unterabfragen, Variablen oder nicht-deterministische Funktionen enthalten.
SUBSCRIBE BY-Klausel In SQL Remote kann mit dieser Klausel eine Teilmenge von Zeilen einer Tabelle definiert werden, die in einen Artikel aufgenommen werden soll. Diese Klausel ermöglicht es vielen verschiedenen Subskribenten, unterschiedliche Zeilen einer Tabelle in einer einzigen Publikationsdefinition zu erhalten.
Die CREATE PUBLICATION-Anweisung erstellt eine Publikation in der Datenbank. Eine Publikation kann für einen anderen Benutzer erstellt werden, indem ein Eigentümername angegeben wird.
In MobiLink werden Publikationen in entfernten SQL Anywhere-Datenbanken benötigt, in UltraLite-Datenbanken sind sie optional. Diese Publikationen und die entsprechenden Subskriptionen bestimmen, welche Daten an den MobiLink-Server übertragen werden.
Die Optionen für eine MobiLink-Publikation können Sie mit der ADD OPTION-Klausel in der CREATE SYNCHRONIZATION SUBSCRIPTION- oder ALTER SYNCHRONIZATION SUBSCRIPTION-Anweisung einstellen.
Syntax 2 erstellt eine Publikation für skriptgesteuerte Uploads. Verwenden Sie die USING-Klausel, um die gespeicherten Prozeduren anzugeben, die Sie zur Definition des Uploads verwenden wollen. Bei jeder Tabelle können Sie bis zu drei gespeicherte Prozeduren verwenden: jeweils eine für Einfügungen, Löschungen und Aktualisierungen.
Syntax 3 erstellt eine reine Downloadpublikation, die ohne Transaktionslogdatei synchronisiert werden kann. Wenn reine Downloadpublikationen synchronisiert werden, können Downloadzeilen Änderungen überschreiben, die an diesen Zeilen in der entfernten Datenbank durchgeführt wurden.
In SQL Remote ist das Publizieren ein Vorgang mit zwei Möglichkeiten, da Daten sowohl in konsolidierten als auch in entfernten Datenbanken eingegeben werden können. In einer SQL Remote-Installation müssen die konsolidierte Datenbank und alle entfernten Datenbanken dieselbe Publikation definiert haben. Wenn das SQL Remote-Extraktionsdienstprogramm aus einer konsolidierten Datenbank ausgeführt wird, führt das System automatisch die richtige CREATE PUBLICATION-Anweisung in der entfernten Datenbank aus.
DBA-Berechtigung und exklusiver Zugriff auf alle Tabellen, die in der Anweisung referenziert werden.
Automatisches Festschreiben (Autocommit).
SQL/2008 Erweiterung des Herstellers.
Mit der folgenden Anweisung werden alle Spalten und Zeilen von zwei Tabellen publiziert.
CREATE PUBLICATION pub_contact ( TABLE Contacts, TABLE Company ); |
Mit der folgenden Anweisung werden nur einige Spalten einer Tabelle publiziert.
CREATE PUBLICATION pub_customer ( TABLE Customers ( ID, CompanyName, City ) ); |
Mit der folgenden Anweisung werden nur aktive Kundenzeilen publiziert, indem eine WHERE-Klausel eingefügt wird, die den Wert in der Statusspalte der Customers-Tabelle prüft.
CREATE PUBLICATION pub_customer ( TABLE Customers ( ID, CompanyName, City, State, Status ) WHERE Status = 'active' ); |
Mit der folgenden Anweisung werden nur einige Zeilen publiziert, und zwar durch Angabe eines SUBSCRIBE BY-Werts. Diese Methode kann nur mit SQL Remote benutzt werden.
CREATE PUBLICATION pub_customer ( TABLE Customers ( ID, CompanyName, City, State ) SUBSCRIBE BY State ); |
Beim Erstellen einer SQL Remote-Subskription wird der SUBSCRIBE BY-Wert wie folgt verwendet.
CREATE SUBSCRIPTION TO pub_customer ( 'NY' ) FOR jsmith; |
Das folgende Beispiel erstellt eine MobiLink-Publikation, die skriptgesteuerte Uploads verwendet:
CREATE PUBLICATION pub WITH SCRIPTED UPLOAD ( TABLE t1 (a, b, c) USING ( PROCEDURE my.t1_ui FOR UPLOAD INSERT, PROCEDURE my.t1_ud FOR UPLOAD DELETE, PROCEDURE my.t1_uu FOR UPLOAD UPDATE ), TABLE t2 AS my_t2 USING ( PROCEDURE my.t2_ui FOR UPLOAD INSERT ) ); |
Das folgende Beispiel erstellt eine reine Downloadpublikation:
CREATE PUBLICATION p1 FOR DOWNLOAD ONLY ( TABLE t1 ); |
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |