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) » SQL Anywhere Server - SQL-Referenzhandbuch » Verwendung von SQL » SQL-Anweisungen » SQL-Anweisungen (A-D)

 

CREATE PUBLICATION-Anweisung [MobiLink] [SQL Remote]

Mit dieser Anweisung erstellen Sie eine Publikation. In MobiLink kennzeichnet eine Publikation synchronisierte Daten in einer entfernten SQL Anywhere-Datenbank. In SQL Remote kennzeichnen Publikationen Replikatdaten sowohl in konsolidierten als auch in entfernten Datenbanken.

Syntax 1 (MobiLink, allgemeiner Gebrauch)
CREATE PUBLICATION [ Eigentümer.]Publikationsname
(
 Artikeldefinition, ... )
Artikeldefinition :
  TABLE Tabellenname [ ( Spaltenname, ... ) ]
[ WHERE Suchbedingung ]
Syntax 2 (MobiLink, skriptgesteuerter Upload)
CREATE PUBLICATION [ Eigentümer.]Publikationsname
WITH SCRIPTED UPLOAD
( Artikeldefinition, ... )
Artikeldefinition :
  TABLE Tabellenname [ ( Spaltenname, ... ) ] 
[ USING (  [PROCEDURE ] [ Eigentümer.][Prozedurname ] 
   FOR UPLOAD { INSERT | DELETE | UPDATE }, ... ) ]
Syntax 3 (MobiLink, reine Downloadpublikationen)
CREATE PUBLICATION [ Eigentümer.]Publikationsname
FOR DOWNLOAD ONLY
( Artikeldefinition, ... )
Artikeldefinition :  TABLE Tabellenname [ ( Spaltenname, ... ) ]
Syntax 4 (SQL Remote)
CREATE PUBLICATION [ Eigentümer.]Publikationsname
(
 Artikeldefinition, ... )
Artikeldefinition :
  TABLE Tabellenname [ ( Spaltenname, ... ) ]
[ WHERE Suchbedingung ]
[ SUBSCRIBE BY Ausdruck ]
Parameter
  • Artikeldefinition   Publikationen werden aus Artikeln erstellt. Wenn Sie mehr als einen Artikel aufnehmen, trennen Sie die Artikeldefinitionen mit Kommata. Jeder Artikel ist eine Tabelle oder Teil einer Tabelle. Ein Artikel kann eine senkrechte Partition einer Tabelle sein (eine Teilmenge der Tabellenspalten), eine waagrechte Partition (eine auf einer WHERE-Klausel basierende Teilmenge der Tabellenzeilen) oder eine senkrechte und waagrechte Partition.

    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. Weitere Hinweise finden Sie unter Publikationen für skriptgesteuerte Uploads erstellen.

    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   Die WHERE-Klausel ist eine Möglichkeit, die Teilmenge von Zeilen einer Tabelle zu 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.

Bemerkungen

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 Download-Publikation, die ohne Logdatei 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-Extraktionsprogramm von einer konsolidierten Datenbank aus ausgeführt wird, führt das System automatisch die richtige CREATE PUBLICATION-Anweisung in der entfernten Datenbank aus.

Berechtigungen

DBA-Berechtigung ist erforderlich. Erfordert exklusiven Zugriff auf alle Tabellen, die in der Anweisung referenziert werden.

Nebenwirkungen

Automatisches Festschreiben (Autocommit).

Siehe auch
Standards und Kompatibilität
  • SQL/2003   Erweiterung des Herstellers

Beispiel

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 Statuszeile 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
);