Freigeben über


CREATE TABLE (SQL-Befehl)

Erstellt eine Tabelle mit den angegebenen Feldern.

Der Visual FoxPro ODBC-Treiber unterstützt die native Visual FoxPro-Sprachsyntax für diesen Befehl. Treiberspezifische Informationen finden Sie in den Treiberhinweisen.

Syntax

  
CREATE TABLE | DBF TableName1 [NAME LongTableName] [FREE]  
   (FieldName1FieldType [(nFieldWidth [, nPrecision])]  
      [NULL | NOT NULL]   
      [CHECK lExpression1 [ERROR cMessageText1]]  
      [DEFAULT eExpression1]  
      [PRIMARY KEY | UNIQUE]  
      [REFERENCES TableName2 [TAG TagName1]]  
      [NOCPTRANS]  
   [, FieldName2 ...]  
      [, PRIMARY KEY eExpression2 TAG TagName2  
      |, UNIQUE eExpression3 TAG TagName3]  
      [, FOREIGN KEY eExpression4 TAG TagName4 [NODUP]  
            REFERENCES TableName3 [TAG TagName5]]  
      [, CHECK lExpression2 [ERROR cMessageText2]])  
| FROM ARRAY ArrayName  

Argumente

TABELLE ERSTELLEN | DBF TableName1
Gibt den Namen der zu erstellenden Tabelle an. Die OPTIONEN TABLE und DBF sind identisch.

NAME LongTableName
Gibt einen langen Namen für die Tabelle an. Ein langer Tabellenname kann nur angegeben werden, wenn eine Datenbank geöffnet ist, da lange Tabellennamen in Datenbanken gespeichert sind.

Lange Namen können bis zu 128 Zeichen enthalten und anstelle kurzer Dateinamen in der Datenbank verwendet werden.

KOSTENLOS
Gibt an, dass die Tabelle keiner geöffneten Datenbank hinzugefügt wird. FREE ist nicht erforderlich, wenn eine Datenbank nicht geöffnet ist.

(FieldName1 FieldType [( nFieldWidth [; nPrecision])]
Gibt den Feldnamen, den Feldtyp, die Feldbreite und die Feldgenauigkeit (Anzahl der Dezimalstellen) an.

FieldType ist ein einzelner Buchstabe, der den Datentyp des Felds angibt. Für einige Felddatentypen müssen Sie "nFieldWidth" oder "nPrecision" oder beides angeben.

nFieldWidth und nPrecision werden für D-, G-, I-, L-, M-, P-, T- und Y-Typen ignoriert. nPrecision ist standardmäßig null (keine Dezimalstellen), wenn nPrecision nicht für die Typen B, F oder N enthalten ist.

NULL
Lässt Nullwerte im Feld zu.

NICHT NULL
Verhindert NULL-Werte im Feld.

Wenn Sie NULL und NOT NULL weglassen, bestimmt die aktuelle Einstellung von SET NULL, ob Nullwerte im Feld zulässig sind. Wenn Sie JEDOCH NULL und NOT NULL weglassen und die PRIMARY KEY- oder UNIQUE-Klausel einschließen, wird die aktuelle Einstellung von SET NULL ignoriert, und das Feld ist standardmäßig NICHT NULL.

CHECK lExpression1
Gibt eine Gültigkeitsprüfungsregel für das Feld an. lExpression1 kann eine benutzerdefinierte Funktion sein. Wenn ein leerer Datensatz angefügt wird, wird die Gültigkeitsprüfungsregel überprüft. Wenn die Gültigkeitsprüfungsregel keinen leeren Feldwert in einem angefügten Datensatz zulässt, wird ein Fehler generiert.

ERROR cMessageText1
Gibt die Fehlermeldung an, die Visual FoxPro anzeigt, wenn die Feldregel einen Fehler generiert. Die Meldung wird nur angezeigt, wenn Daten in einem Fenster "Durchsuchen" oder in einem Bearbeitungsfenster geändert werden.

DEFAULT eExpression1
Gibt einen Standardwert für das Feld an. Der Datentyp von eExpression1 muss mit dem Datentyp des Felds übereinstimmen.

PRIMÄRSCHLÜSSEL
Erstellt einen Primärindex für das Feld. Das primäre Indextag hat denselben Namen wie das Feld.

EINZIGARTIG
Erstellt einen Kandidatenindex für das Feld. Das Kandidatenindextag hat denselben Namen wie das Feld.

Hinweis

Kandidatenindizes (die mit der UNIQUE-Option in CREATE TABLE oder ALTER TABLE - SQL erstellt werden) sind nicht mit Indizes identisch, die mit der UNIQUE-Option im BEFEHL INDEX erstellt wurden. Ein index, der mit der OPTION EINDEUTIG im BEFEHL INDEX erstellt wurde, ermöglicht doppelte Indextasten; Kandidatenindizes lassen keine doppelten Indexschlüssel zu. Weitere Informationen zur UNIQUE-Option finden Sie unter INDEX .

Nullwerte und doppelte Datensätze sind in einem Feld, das für einen primären oder Kandidatenindex verwendet wird, nicht zulässig. Visual FoxPro generiert jedoch keinen Fehler, wenn Sie einen primären oder Kandidatenindex für ein Feld erstellen, das Nullwerte unterstützt. Visual FoxPro generiert einen Fehler, wenn Sie versuchen, einen Null- oder doppelten Wert in ein Feld einzugeben, das für einen primären oder Kandidatenindex verwendet wird.

REFERENCES TableName2[TAG TagName1]
Gibt die übergeordnete Tabelle an, zu der eine dauerhafte Beziehung eingerichtet wird. Wenn Sie TAGName1 weglassen, wird die Beziehung mithilfe des Primärindexschlüssels der übergeordneten Tabelle hergestellt. Wenn die übergeordnete Tabelle keinen primären Index aufweist, generiert Visual FoxPro einen Fehler.

Fügen Sie TAG-TagName1 ein, um eine Beziehung basierend auf einem vorhandenen Indextag für die übergeordnete Tabelle einzurichten. Indextagnamen können bis zu 10 Zeichen enthalten.

Die übergeordnete Tabelle kann keine freie Tabelle sein.

NOCPTRANS
Verhindert die Übersetzung auf eine andere Codeseite für Zeichen- und Memofelder. Wenn die Tabelle in eine andere Codeseite konvertiert wird, werden die Felder, für die NOCPTRANS angegeben wurde, nicht übersetzt. NOCPTRANS kann nur für Zeichen- und Memofelder angegeben werden.

Im folgenden Beispiel wird eine Tabelle mit dem Namen "mytable" erstellt, die zwei Zeichenfelder und zwei Memofelder enthält. Das zweite Zeichenfeld, zeichen2 und das zweite Memofeld, Memo2, enthalten NOCPTRANS, um die Übersetzung zu verhindern.

CREATE TABLE mytable (char1 C(10), char2 C(10) NOCPTRANS,;  
   memo1 M, memo2 M NOCPTRANS)  

PRIMARY KEY eExpression2 TAG TagName2
Gibt einen zu erstellenden Primärindex an. eExpression2 gibt ein beliebiges Feld oder eine Kombination von Feldern in der Tabelle an. TAG TagName2 gibt den Namen für das primäre Indextag an, das erstellt wird. Indextagnamen können bis zu 10 Zeichen enthalten.

Da eine Tabelle nur über einen primären Index verfügen kann, können Sie diese Klausel nicht einschließen, wenn Sie bereits einen Primärindex für ein Feld erstellt haben. Visual FoxPro generiert einen Fehler, wenn Sie mehr als eine PRIMARY KEY-Klausel in CREATE TABLE einschließen.

UNIQUE eExpression3TAG TagName3
Erstellt einen Kandidatenindex. eExpression3 gibt ein beliebiges Feld oder eine Kombination von Feldern in der Tabelle an. Wenn Sie jedoch einen Primärindex mit einer der PRIMARY KEY-Optionen erstellt haben, können Sie das Feld, das für den primären Index angegeben wurde, nicht einschließen. TAG TagName3 gibt einen Tagnamen für das Kandidatenindextag an, das erstellt wird. Indextagnamen können bis zu 10 Zeichen enthalten.

Eine Tabelle kann mehrere Kandidatenindizes aufweisen.

FOREIGN KEY eExpression4TAG TagName4[NODUP]
Erstellt einen fremden (nichtprimären) Index und stellt eine Beziehung zu einer übergeordneten Tabelle her. eExpression4 gibt den Fremdindexschlüsselausdruck an, und TagName4 gibt den Namen des Fremdindexschlüsseltags an, das erstellt wird. Indextagnamen können bis zu 10 Zeichen enthalten. Fügen Sie NODUP ein, um einen Kandidaten-Fremdindex zu erstellen.

Sie können mehrere Fremdindizes für die Tabelle erstellen, die Fremdindexausdrücke müssen jedoch unterschiedliche Felder in der Tabelle angeben.

REFERENCES TableName3[TAG TagName5]
Gibt die übergeordnete Tabelle an, zu der eine dauerhafte Beziehung eingerichtet wird. Fügen Sie TAG-TagName5 hinzu, um eine Beziehung basierend auf einem Indextag für die übergeordnete Tabelle einzurichten. Indextagnamen können bis zu 10 Zeichen enthalten. Wenn Sie TAG TagName5 weglassen, wird die Beziehung standardmäßig mithilfe des Primärindexschlüssels der übergeordneten Tabelle hergestellt.

CHECK eExpression2[ERROR cMessageText2]
Gibt die Tabellenüberprüfungsregel an. ERROR cMessageText2 gibt die Fehlermeldung an, die Visual FoxPro anzeigt, wenn die Tabellenüberprüfungsregel ausgeführt wird. Die Meldung wird nur angezeigt, wenn Daten in einem Fenster "Durchsuchen" oder "Bearbeiten" geändert werden.

FROM ARRAY ArrayName
Gibt den Namen eines vorhandenen Arrays an, dessen Inhalt der Name, Typ, Genauigkeit und Skalierung für jedes Feld in der Tabelle sind. Der Inhalt des Arrays kann mit der Funktion AFIELDS( ) definiert werden.

Hinweise

Die neue Tabelle wird im niedrigsten verfügbaren Arbeitsbereich geöffnet und kann über den Alias aufgerufen werden. Die neue Tabelle wird exklusiv geöffnet, unabhängig von der aktuellen Einstellung von SET EXCLUSIVE.

Wenn eine Datenbank geöffnet ist und Sie die FREE-Klausel nicht einschließen, wird die neue Tabelle der Datenbank hinzugefügt. Sie können keine neue Tabelle mit demselben Namen wie eine Tabelle in der Datenbank erstellen.

Wenn eine Datenbank geöffnet ist, erfordert CREATE TABLE - SQL eine exklusive Verwendung der Datenbank. Um eine Datenbank zur exklusiven Verwendung zu öffnen, schließen Sie EXCLUSIVE in OPEN DATABASE ein.

Wenn eine Datenbank nicht geöffnet ist, wenn Sie die neue Tabelle erstellen, einschließlich NAME, CHECK, DEFAULT, FREMDSCHLÜSSEL, PRIMARY KEY oder REFERENCES-Klauseln, wird ein Fehler generiert.

Hinweis

CREATE TABLE-Syntax verwendet Kommas, um bestimmte CREATE TABLE-Optionen zu trennen. Außerdem muss die NULL-, NOT NULL-, CHECK-, DEFAULT-, PRIMARY KEY- und UNIQUE-Klausel in den Klammern platziert werden, die die Spaltendefinitionen enthalten.

Hinweise zu Treibern

Wenn Ihre Anwendung die ODBC SQL-Anweisung CREATE TABLE an die Datenquelle sendet, übersetzt der Visual FoxPro ODBC-Treiber den Befehl mithilfe der in der folgenden Tabelle gezeigten Syntax in den Visual FoxProCREATE TABLE-Befehl.

ODBC-Syntax Visual FoxPro-Syntax
CREATE TABLE-Basistabellenname

(Datentyp des Spaltenbezeichners

[NICHT NULL]

[,Datentyp des Spaltenbezeichners

[NICHT NULL] ...)
CREATE TABLE TableName1[NAME LongTableName]

(FieldName1 FieldType

[(nFieldWidth [, nPrecision])]

[NICHT NULL])

Wenn Sie eine Tabelle mithilfe des Treibers erstellen, schließt der Treiber die Tabelle unmittelbar nach der Erstellung, um den Zugriff auf die Tabelle durch andere Benutzer zu ermöglichen. Dies unterscheidet sich von Visual FoxPro, wodurch die Tabelle exklusiv bei der Erstellung geöffnet bleibt. Wenn jedoch eine gespeicherte Prozedur in Ihrer Datenquelle mit einer CREATE TABLE-Anweisung ausgeführt wird, bleibt die Tabelle geöffnet.

Wenn es sich bei der Datenquelle um eine Datenbank (DBC-Datei) handelt, erstellt der Visual FoxPro ODBC-Treiber eine Tabelle namens LongTableName mit demselben Namen wie der Basistabellenname.

Verwenden der Datendefinitionssprache (Data Definition Language, DDL)

Sie können DDL nicht an folgenden Stellen einschließen:

  • In einer SQL-Batch-Anweisung, für die eine Transaktion erforderlich ist

  • Im manuellen Commit-Modus nach einer Anweisung, die eine Transaktion erforderte, es sei denn, ihre Anwendung ruft zuerst SQLTransact auf.

Wenn Sie beispielsweise eine temporäre Tabelle erstellen möchten, sollten Sie die Tabelle erstellen, bevor Sie mit der Anweisung beginnen, die eine Transaktion erfordert. Wenn Sie die CREATE TABLE-Anweisung in eine SQL-Batch-Anweisung einschließen, die eine Transaktion erfordert, gibt der Treiber eine Fehlermeldung zurück.

Weitere Informationen

ALTER TABLE (SQL-Befehl)
Unterstützte Datentypen (Visual FoxPro-ODBC-Treiber)
INSERT (SQL-Befehl)
SELECT (SQL-Befehl)