Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Ändert programmgesteuert die Struktur einer Tabelle.
Syntax
ALTER TABLE TableName1
ADD | ALTER [COLUMN] FieldName1
FieldType [(nFieldWidth [, nPrecision])]
[NULL | NOT NULL]
[CHECK lExpression1 [ERROR cMessageText1]]
[DEFAULT eExpression1]
[PRIMARY KEY | UNIQUE]
[REFERENCES TableName2 [TAG TagName1]]
[NOCPTRANS]
- Or -
ALTER TABLE TableName1
ALTER [COLUMN] FieldName2
[NULL | NOT NULL]
[SET DEFAULT eExpression2]
[SET CHECK lExpression2 [ERROR cMessageText2]]
[DROP DEFAULT]
[DROP CHECK]
- Or -
ALTER TABLE TableName1
[DROP [COLUMN] FieldName3]
[SET CHECK lExpression3 [ERROR cMessageText3]]
[DROP CHECK]
[ADD PRIMARY KEY eExpression3 TAG TagName2]
[DROP PRIMARY KEY]
[ADD UNIQUE eExpression4 [TAG TagName3]]
[DROP UNIQUE TAG TagName4]
[ADD FOREIGN KEY [eExpression5] TAG TagName4
REFERENCES TableName2 [TAG TagName5]]
[DROP FOREIGN KEY TAG TagName6 [SAVE]]
[RENAME COLUMN FieldName4 TO FieldName5]
[NOVALIDATE]
Argumente
TableName1
Gibt den Namen der Tabelle an, deren Struktur geändert wird.
ADD [COLUMN] FieldName1
Gibt den Namen des hinzuzufügenden Felds an.
ALTER [COLUMN] FieldName1
Gibt den Namen eines vorhandenen zu ändernden Felds an.
FieldType [( nFieldWidth [, nPrecision]])
Gibt den Feldtyp, die Feldbreite und die Feldgenauigkeit (Anzahl der Dezimalstellen) für ein neues oder geändertes Feld 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. Standardmäßig ist nPrecision null (keine Dezimalstellen), wenn nPrecision nicht für die Typen B, F oder N enthalten ist.
NULL | NICHT NULL
Ermöglicht oder verhindert Nullwerte 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 muss zu einem logischen Ausdruck ausgewertet werden und kann eine benutzerdefinierte Funktion oder eine gespeicherte Prozedur 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 angezeigt wird, wenn die Feldüberprüfungsregel einen Fehler generiert.
DEFAULT eExpression1
Gibt einen Standardwert für das Feld an. Der Datentyp von eExpression1 muss mit dem Datentyp für das Feld übereinstimmen.
PRIMÄRSCHLÜSSEL
Erstellt ein primäres Indextag. Das Indextag hat denselben Namen wie das Feld.
EINZIGARTIG
Erstellt ein Kandidatenindextag mit demselben Namen wie das Feld.
Hinweis
Kandidatenindizes (erstellt mit der UNIQUE-Option, die für DIE ANSI-Kompatibilität in ALTER TABLE oder CREATE TABLE bereitgestellt wird) unterscheiden sich von Indizes, die mithilfe der UNIQUE-Option im BEFEHL INDEX erstellt wurden. Ein Index, der mithilfe von UNIQUE im BEFEHL INDEX erstellt wird, ermöglicht doppelte Indextasten; Kandidatenindizes lassen keine doppelten Indexschlüssel zu.
Nullwerte und doppelte Datensätze sind in einem Feld, das für einen primären index oder kandidaten verwendet wird, nicht zulässig.
Wenn Sie ein neues Feld mithilfe von ADD COLUMN erstellen, generiert Visual FoxPro keinen Fehler, wenn Sie einen primären oder Kandidatenindex für ein Feld erstellen, das Nullwerte unterstützt. Visual FoxPro generiert jedoch einen Fehler, wenn Sie versuchen, einen Null- oder doppelten Wert in ein Feld einzugeben, das für einen primären oder Kandidatenindex verwendet wird.
Wenn Sie ein vorhandenes Feld ändern und der primäre oder Kandidatenindexausdruck aus Feldern in der Tabelle besteht, überprüft Visual FoxPro die Felder, um festzustellen, ob sie Nullwerte oder doppelte Datensätze enthalten. Wenn sie dies tun, generiert Visual FoxPro einen Fehler, und die Tabelle wird nicht geändert.
REFERENCES TableName2 TAGName1
Gibt die übergeordnete Tabelle an, zu der eine dauerhafte Beziehung eingerichtet wird. TAG TagName1 gibt das Indextag der übergeordneten Tabelle an, auf dem die Beziehung basiert. Indextagnamen können bis zu 10 Zeichen enthalten.
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)
ALTER [COLUMN] FieldName2
Gibt den Namen eines vorhandenen zu ändernden Felds an.
SET DEFAULT eExpression2
Gibt einen neuen Standardwert für ein vorhandenes Feld an. Der Datentyp von eExpression2 muss mit dem Datentyp für das Feld übereinstimmen.
SET CHECK lExpression2
Gibt eine neue Gültigkeitsprüfungsregel für ein vorhandenes Feld an.
lExpression2 muss zu einem logischen Ausdruck ausgewertet werden und kann eine benutzerdefinierte Funktion oder eine gespeicherte Prozedur sein.
ERROR cMessageText2
Gibt die Fehlermeldung an, die angezeigt wird, wenn die Feldüberprüfungsregel einen Fehler generiert. Die Meldung wird nur angezeigt, wenn Daten in einem Fenster "Durchsuchen" oder "Bearbeiten" geändert werden.
DROP DEFAULT
Entfernt den Standardwert für ein vorhandenes Feld.
DROP CHECK
Entfernt die Gültigkeitsprüfungsregel für ein vorhandenes Feld.
DROP [COLUMN] FieldName3
Gibt ein Feld an, das aus der Tabelle entfernt werden soll. Durch das Entfernen eines Felds aus der Tabelle werden auch die Standardwerteinstellungen und die Feldüberprüfungsregel entfernt.
Wenn Indexschlüssel oder Triggerausdrücke auf das Feld verweisen, werden die Ausdrücke ungültig, wenn das Feld entfernt wird. In diesem Fall wird kein Fehler generiert, wenn das Feld entfernt wird, aber der ungültige Indexschlüssel oder Triggerausdruck generiert zur Laufzeit Fehler.
SET CHECK lExpression3
Gibt die Tabellenüberprüfungsregel an.
lExpression3 muss zu einem logischen Ausdruck ausgewertet werden und kann eine benutzerdefinierte Funktion oder eine gespeicherte Prozedur sein.
ERROR cMessageText3
Gibt die Fehlermeldung an, die angezeigt wird, wenn die Tabellenüberprüfungsregel einen Fehler generiert. Die Meldung wird nur angezeigt, wenn Daten in einem Fenster "Durchsuchen" oder "Bearbeiten" geändert werden.
DROP CHECK
Entfernt die Gültigkeitsprüfungsregel der Tabelle.
ADD PRIMARY KEY eExpression3TAG TagName2
Fügt der Tabelle einen Primärindex hinzu.
eExpression3 gibt den Primären Indexschlüsselausdruck an, und TagName2 gibt den Namen des primären Indextags an. Indextagnamen können bis zu 10 Zeichen enthalten. Wenn TAG TagName2 ausgelassen wird und eExpression3 ein einzelnes Feld ist, hat das primäre Indextag denselben Namen wie das in eExpression3 angegebene Feld.
DROP-PRIMÄRSCHLÜSSEL
Entfernt den primären Index und sein Indextag. Da eine Tabelle nur einen Primärschlüssel aufweisen kann, ist es nicht erforderlich, den Namen des Primärschlüssels anzugeben. Durch das Entfernen des Primärindex werden auch alle dauerhaften Beziehungen basierend auf dem Primärschlüssel gelöscht.
ADD UNIQUE eExpression4[TAG TagName3]
Fügt der Tabelle einen Kandidatenindex hinzu.
eExpression4 gibt den Kandidatenindexschlüsselausdruck an, und TagName3 gibt den Namen des Kandidatenindextags an. Indextagnamen können bis zu 10 Zeichen enthalten. Wenn Sie TAGName3 weglassen und eExpression4 ein einzelnes Feld ist, hat das Kandidatenindextag den gleichen Namen wie das in eExpression4 angegebene Feld.
DROP UNIQUE TAG TagName4
Entfernt den Kandidatenindex und sein Indextag. Da eine Tabelle mehrere Kandidatenschlüssel enthalten kann, müssen Sie den Namen des Kandidatenindextags angeben.
ADD FOREIGN KEY [ eExpression5]TAG TagName4
Fügt der Tabelle einen fremden Index (nichtprimär) hinzu.
eExpression5 gibt den Fremdindexschlüsselausdruck an, und TagName4 gibt den Namen des Fremdindextags an. Indextagnamen können bis zu 10 Zeichen enthalten.
REFERENCES TableName2[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 vorhandenen Indextag für die übergeordnete Tabelle einzurichten. Indextagnamen können bis zu 10 Zeichen enthalten. Wenn Sie TAG TagName5 weglassen, wird die Beziehung mithilfe des primären Indextags der übergeordneten Tabelle hergestellt.
DROP FOREIGN KEY TAG TagName6[SAVE]
Löscht einen Fremdschlüssel, dessen Indextag "TagName6" lautet. Wenn Sie SAVE weglassen, wird das Indextag aus dem Strukturindex gelöscht. Schließen Sie SAVE ein, um das Löschen des Indextags aus dem Strukturindex zu verhindern.
COLUMN FieldName4TO FieldName5 UMBENENNEN
Ermöglicht es Ihnen, den Namen eines Felds in der Tabelle zu ändern.
FieldName4 gibt den Namen des umbenannten Felds an.
FieldName5 gibt den neuen Namen des Felds an.
Vorsicht
Übungspflege beim Umbenennen von Tabellenfeldern, da Indexausdrücke, Feld- und Tabellenüberprüfungsregeln, Befehle und Funktionen auf die ursprünglichen Feldnamen verweisen können.
NOVALIDATE
Gibt an, dass Visual FoxPro Änderungen an der Struktur der Tabelle zulässt; Diese Änderungen verstoßen möglicherweise gegen die Integrität der Daten in der Tabelle. Standardmäßig verhindert Visual FoxPro, dass ALTER TABLE Änderungen vornimmt, die die Integrität der Daten in der Tabelle verletzen. Schließen Sie NOVALIDATE ein, um dieses Standardverhalten außer Kraft zu setzen.
Bemerkungen
ALTER TABLE kann verwendet werden, um die Struktur einer Tabelle zu ändern, die keiner Datenbank hinzugefügt wurde. Visual FoxPro generiert jedoch einen Fehler, wenn Sie beim Ändern einer freien Tabelle die KLAUSELN DEFAULT, FOREIGN KEY, PRIMARY KEY, REFERENCES oder SET einschließen.
ALTER TABLE kann die Tabelle neu erstellen, indem eine neue Tabellenüberschrift erstellt und Datensätze an die Tabellenüberschrift angefügt werden. Beispielsweise kann das Ändern des Feldtyps oder der Breite dazu führen, dass die Tabelle neu erstellt wird.
Nachdem eine Tabelle neu erstellt wurde, werden Feldüberprüfungsregeln für alle Felder ausgeführt, deren Typ oder Breite geändert wird. Wenn Sie den Typ oder die Breite eines Felds in der Tabelle ändern, wird die Tabellenregel ausgeführt.
Wenn Sie Feld- oder Tabellenüberprüfungsregeln für eine Tabelle ändern, die Datensätze enthält, testet Visual FoxPro die neuen Feld- oder Tabellenüberprüfungsregeln anhand der vorhandenen Daten und gibt eine Warnung über das erste Vorkommen einer Feld- oder Tabellenüberprüfungsregel oder eines auslösenden Verstoßes aus.
Wenn sich die von Ihnen geänderte Tabelle in einer Datenbank befindet, erfordert ALTER TABLE - SQL eine exklusive Verwendung der Datenbank. Um eine Datenbank zur exklusiven Verwendung zu öffnen, schließen Sie EXCLUSIVE in OPEN DATABASE ein.