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)

 

ALTER TABLE-Anweisung

Mit dieser Anweisung können Sie eine Tabellendefinition ändern, abhängige Ansichten deaktivieren oder eine Tabelle aktivieren, damit sie an einer Replication Server-Replikation teilnehmen kann.

Syntax
ALTER TABLE [ Eigentümer.]Tabellenname { Alter-Klausel, ... }
Alter-Klausel :
ADD Create-Klausel
| ALTER Spaltenname Spaltenänderung
| ALTER [ CONSTRAINT Integritätsregelname ] CHECK ( Bedingung )
| DROP Löschobjekt
| RENAME Umbenennungsobjekt
| Tabellenänderung
Create-Klausel :
Spaltenname [AS] Spaltendatentyp [ neues_Spaltenattribut ... ]
| Tabellen-Integritätsregel
| PCTFREE Ganzzahl
Spaltenänderung :
 { Spalten_Datentyp | änderbares_Spaltenattribut } [änderbares_Spaltenattribut ... ]
| SET COMPUTE ( Berechnungsausdruck )
| ADD [ Integritätsregelname ] CHECK ( Bedingung )
| DROP { DEFAULT | COMPUTE | CHECK | CONSTRAINT Integritätsregelname }
Löschobjekt :
Spaltenname
| CHECK
| CONSTRAINT Integritätsregelname
| UNIQUE [CLUSTERED] ( Indexspalten_Liste )
| FOREIGN KEY FSchlüssel_Name
| PRIMARY KEY
Umbenennungsobjekt :
neuer_Tabellenname
| Spaltenname TO neuer_Spaltenname
| CONSTRAINT Integritätsregelname TO neuer_Integritätsregelname 
Tabellenänderung :
PCTFREE DEFAULT
| REPLICATE { ON | OFF }
| [ NOT ] ENCRYPTED
neues_Spaltenattribut :
NULL
| DEFAULT Standardwert
| COMPRESSED
| INLINE { Inline_Länge | USE DEFAULT }
| PREFIX { Präfix_Länge | USE DEFAULT }
| [NO] INDEX
| IDENTITY
| COMPUTE ( Ausdruck )
| Spalten_Integritätsregel
Tabellen-Integritätsregel :
[ CONSTRAINT Integritätsregelname ] {
   CHECK ( Bedingung )
   | UNIQUE [CLUSTEREDNONCLUSTERED] ( Spaltenname [ASC  | DESC ], ... )  | PRIMARY KEY [ CLUSTERED | NONCLUSTERED] ( Spaltenname [ASC  | DESC ], ... )
   | Fremdschlüssel
  }
Spalten_Integritätsregel :
[ CONSTRAINT Integritätsregelname ] {
   CHECK ( Bedingung )
   | UNIQUE [ CLUSTERED | NONCLUSTERED ] [ ASC | DESC ]
   | PRIMARY KEY [ CLUSTERED | NONCLUSTERED ] [ ASC | DESC ]
   | REFERENCES Tabellenname [ ( Spaltenname ) ] 
      [ MATCH [ UNIQUE] { SIMPLE | FULL } ]  
      [ Aktionen ][ CLUSTERED | NONCLUSTERED ]
   | NOT NULL
  }
änderbares_Spaltenattribut :
 [NOT] NULL
| DEFAULT Standardwert
| [ CONSTRAINT Integritätsregelname ] CHECK { NULL | ( Bedingung ) }
| [NOT] COMPRESSED
| INLINE { Inline_Länge | USE DEFAULT }
| PREFIX { Präfix_Länge | USE DEFAULT }
| [NOINDEX
Standardwert :
 Spezialwert
| Zeichenfolge
| globale_Variable 
| [ - ] Nummer
| ( Integritätsregel_Ausdruck )
| integrierte_Funktion( Konstantenausdruck )
| AUTOINCREMENT 
| GLOBAL AUTOINCREMENT [ ( Partitionsgröße ) ]
| NULL
| TIMESTAMP
| UTC TIMESTAMP
| LAST USER
| USER
Spezialwert :
CURRENT { 
   DATABASE 
   | DATE
   | REMOTE USER 
   | TIME
   | TIMESTAMP 
   | UTC TIMESTAMP
   | USER 
   | PUBLISHER }
Fremdschlüssel :
[ NOT NULL ] FOREIGN KEY [ Rollenname ] 
   [ (Spaltenname [ ASC | DESC ], ... )
   REFERENCES Tabellenname 
   [ (PSchlüssel_Spaltenliste ) ] 
   [ MATCH [ UNIQUE] { SIMPLE | FULL } ]
   [ Aktionen ] [ CHECK ON COMMIT ] [ CLUSTERED ]
   [ FOR OLAP WORKLOAD ]
Aktionen :
[ ON UPDATE Aktion ] [ ON DELETE Aktion ]
Aktion :
CASCADE | SET NULL | SET DEFAULT | RESTRICT
Syntax 2 - Ansichtenabhängigkeiten deaktivieren
ALTER TABLE [ Eigentümer.]Tabellenname {
 DISABLE VIEW DEPENDENCIES
}
Parameter
  • Hinzufügeklauseln   Im folgenden Abschnitt werden die Klauseln erklärt, die zum Hinzufügen von Definitionen einer Spalte oder Tabelle verwendet werden:

    • ADD Spaltenname [ AS ] Spaltendatentyp [ neues_Spaltenattribut ...] Klausel   Verwenden Sie diese Syntax, um der Tabelle eine neue Spalte hinzuzufügen, indem Sie den Datentyp und Attribute für die Spalte angeben. Weitere Hinweise darüber, welcher Datentyp anzugeben ist, finden Sie unter SQL-Datentypen.

    • NULL- und NOT NULL-Klauseln   Verwenden Sie diese Klausel, um anzugeben, ob NULL in der Spalte zulässig ist. Außer bei Bit-Typ-Spalten ist NULL bei neuen Spalten zulässig. Bei Bit-Typ-Spalten wird während der Erstellung automatisch die NOT NULL-Integritätsregel angewendet.

    • DEFAULT-Klausel   Setzt den Standardwert für die Spalte. Alle Zeilen in der Spalte werden mit diesem Wert gefüllt. Informationen zu möglichen Standardwerten finden Sie unter CREATE TABLE-Anweisung.

    • Spaltenintegritätsregel-Klausel   Verwenden Sie diese Klausel, um der Spalte eine Integritätsregel hinzuzufügen. Wenn eine neue Integritätsregel hinzugefügt wird, validiert der Datenbankserver (außer bei CHECK-Integritätsregeln) bestehende Werte, um zu bestätigen, dass sie der Integritätsregel entsprechen. CHECK-Integritätsregeln werden nur bei Vorgängen erzwungen, die nach Abschluss der Tabellenänderung auftreten. Mögliche Spalten-Integritätsregeln sind:

      • CHECK-Klausel   Verwenden Sie diese Unterklausel, um eine Prüfbedingung für die Spalte hinzuzufügen.

      • UNIQUE-Klausel   Verwenden Sie diese Unterklausel, um anzugeben, dass die Werte in der Spalte eindeutig sein müssen, und ob ein Clustered- oder ein Nonclustered-Index erstellt werden soll.

      • PRIMARY KEY-Klausel   Verwenden Sie diese Unterklausel, um die Spalte zu einem Primärschlüssel zu machen und um anzugeben, ob ein Clustered-Index verwendet werden soll. Weitere Hinweise zu Clustered-Indizes finden Sie unter Clustered-Indizes verwenden.

      • REFERENCES-Klausel   Verwenden Sie diese Unterklausel, um eine Referenz zu einer anderen Tabelle hinzuzufügen oder zu ändern, und um anzugeben, wie Übereinstimmungen gehandhabt und ob ein Clustered-Index verwendet werden soll. Weitere Hinweise zu Clustered-Indizes finden Sie unter Clustered-Indizes verwenden.

      • NULL- und NOT NULL-Klauseln   Verwenden Sie diese Klausel, um anzugeben, ob NULL in der Spalte zulässig ist. Standardmäßig ist NULL zulässig.

    • COMPRESSED-Klausel   Verwenden Sie diese Klausel, um die Spalte zu komprimieren.

    • INLINE- und PREFIX-Klauseln   Wenn Sie BLOBs (nur Zeichen- und Binärdatentypen) speichern, verwenden Sie die INLINE- und PREFIX-Klauseln, um anzugeben, wie viel von einem BLOB (in Byte) innerhalb einer Zeile gespeichert wird. Weitere Hinweise finden Sie unter den INLINE- und PREFIX-Klauseln der CREATE TABLE-Anweisung.

    • INDEX- und NO INDEX-Klauseln   Verwenden Sie diese Klausel, um anzugeben, ob in dieser Spalte Indizes auf großen BLOBs aufgebaut werden sollen. Weitere Informationen zur Verwendung dieser Klausel finden Sie im entsprechenden Abschnitt für die [NO] INDEX-Klausel unter CREATE TABLE-Anweisung.

    • IDENTITY-Klausel   Diese Klausel ist äquivalent mit AUTOINCREMENT, und wird für Kompatibilität mit T-SQL verfügbar gemacht. Die Beschreibung von AUTOINCREMENT finden Sie unter CREATE TABLE-Anweisung.

    • COMPUTE-Klausel   Verwenden Sie diese Klausel, um zu gewährleisten, dass der Wert in der Spalte den Wert von Ausdruck wiederspiegelt. Weitere Hinweise darüber, welche Angaben in der COMPUTE-Klausel zulässig sind, finden Sie unter CREATE TABLE-Anweisung.

    • ADD Tabellenintegritätsregel-Klausel   Verwenden Sie diese Klausel, um eine Tabellen-Integritätsregel hinzuzufügen. Tabellen-Integritätsregeln beschränken den Inhalt von Spalten in der Tabelle. Wenn Sie Tabellen-Integritätsregeln hinzufügen oder ändern, ermöglicht Ihnen der optionale Integritätsregelname, einzelne Integritätsregeln zu ändern oder zu löschen. Es folgt eine Liste der möglichen Tabellen-Integritätsregeln.

      • UNIQUE   Verwenden Sie diese Unterklausel, um anzugeben, dass Werte in den unter Spaltenliste angegebenen Spalten eindeutig sein müssen, und ob ein Clustered-Index verwendet werden soll (optional). Weitere Informationen zu dieser Prozedur finden Sie unter CREATE TABLE-Anweisung.

      • PRIMARY KEY   Verwenden Sie diese Unterklausel, um den Primärschlüssel für die Tabelle hinzuzufügen oder zu ändern, und um anzugeben, ob ein Clustered-Index verwendet werden soll. Die Tabelle darf noch keinen Primärschlüssel besitzen, der mit der Anweisung CREATE TABLE oder einer weiteren ALTER TABLE-Anweisung erstellt wurde. Weitere Informationen zu dieser Prozedur finden Sie unter CREATE TABLE-Anweisung.

        Weitere Hinweise zu Clustered-Indizes finden Sie unter Clustered-Indizes verwenden.

      • Fremdschlüssel   Verwenden Sie diese Unterklausel, um einen Fremdschlüssel als Integritätsregel hinzuzufügen. Wenn Sie eine andere Subklausel als ADD FOREIGN KEY mit der ALTER TABLE-Anweisung bei einer Tabelle mit abhängigen materialisierten Ansichten verwenden, schlägt die ALTER TABLE Anweisung fehl. Bei allen anderen Klauseln müssen Sie die abhängigen materialisierten Ansichten deaktivieren und sie anschließend reaktivieren, nachdem Ihre Änderungen abgeschlossen sind.

        Weitere Informationen zu dieser Prozedur finden Sie unter CREATE TABLE-Anweisung.

    • ADD PCTFREE-Klausel   Geben Sie den Prozentsatz des Speicherplatzes an, den Sie in jeder Tabellenseite reservieren möchten. Der freie Speicherplatz wird verwendet, wenn die Zeilen durch die Datenaktualisierung anwachsen. Wenn in einer Tabellenseite kein freier Speicherplatz verfügbar ist, führt jede Vergrößerung einer Zeile dieser Seite zu einer Aufteilung der Zeile auf mehrere Tabellenseiten, was Zeilenfragmentierung und eventuell Performanceverlust nach sich zieht. Ein Prozentsatz für freien Speicherplatz von 0 bedeutet, dass auf den einzelnen Seiten kein freier Platz zur Verfügung stehen darf —jede Seite wird vollgeschrieben. Ein hoher Prozentsatz hat zur Folge, dass jede einzelne Zeile auf eine eigene Seite eingefügt wird. Wenn PCTFREE nicht festgelegt oder gelöscht wurde, wird der PCTFREE-Standardwert entsprechend der Datenbank-Seitengröße angewendet (200 Byte für eine 4KByte-Seitengröße und höher). Der Wert für PCTFREE wird in der Systemtabelle ISYSTAB gespeichert. Wenn PCTFREE festgelegt ist, verwenden alle nachfolgenden Einträge in die Tabellenseiten den neuen Wert, bereits eingefügte Zeilen werden dadurch jedoch nicht beeinflusst. Der Wert bleibt bestehen, bis er geändert wird. Die Angabe von PCTFREE kann für Basistabellen, globale temporäre oder lokale temporäre Tabellen verwendet werden.

  • Änderungsklauseln   Im folgenden Abschnitt werden die Klauseln erklärt, die zum Ändern von Definitionen einer Spalte oder Tabelle verwendet werden:

    • ALTER Spaltenname Spaltenänderung-Klausel   Verwenden Sie diese Klausel, um die Attribute für die angegebene Spalte zu ändern. Wenn eine Spalte in einer Eindeutigkeits-Integritätsregel, einem Fremdschlüssel oder einem Primärschlüssel enthalten ist, können Sie nur den Standardwert für die Spalte ändern. Für alle anderen Änderungen müssen Sie hingegen den Schlüssel oder die Integritätsregel löschen, bevor Sie die Spalte ändern. Es folgt eine Liste der möglichen Änderungen. Weitere Hinweise zu diesen Attributen finden Sie unter CREATE TABLE-Anweisung.

    • Spalten_Datentyp-Klausel   Verwenden Sie diese Klausel, um die Länge oder den Datentyp der Spalte zu ändern. Wenn nötig werden die Daten in der geänderten Spalte in einen neuen Datentyp konvertiert. Wenn ein Konvertierungsfehler auftritt, schlägt der Vorgang fehl und die Tabelle bleibt unverändert. Sie können die Größe einer Spalte nicht vermindern. Beispiel: Sie können eine Spalte nicht von VARCHAR(100) auf VARCHAR(50) ändern.

    • [ NOT ] NULL-Klausel   Verwenden Sie diese Klausel, um die Einstellung in Bezug auf die Zulässigkeit von NULL in der Spalte zu ändern. Wenn NOT NULL angegeben wird und der Spaltenwert in einer bestehenden Zeile NULL ist, schlägt der Vorgang fehl und die Tabelle bleibt unverändert.

    • CHECK NULL-Klausel   Verwenden Sie diese Klausel, um alle Prüf-Integritätsregeln für die Spalte zu löschen.

    • DEFAULT-Klausel   Verwenden Sie diese Klausel, um den Standardwert für die Spalte zu ändern.

    • DEFAULT NULL-Klausel   Verwenden Sie diese Klausel, um den Standardwert für die Spalte zu entfernen.

    • [ CONSTRAINT Integritätsregelname ] CHECK { NULL | ( Bedingung ) } Klausel   Verwenden Sie diese Klausel, um der Spalte eine Prüf-Integritätsregel hinzuzufügen.

    • [ NOT ] COMPRESSED-Klausel   Verwenden Sie diese Klausel, um die Einstellung in Bezug auf die Spaltenkomprimierung zu ändern.

    • INLINE- und PREFIX-Klauseln   Verwenden Sie die INLINE- und PREFIX-Klauseln bei Spalten, die BLOBs enthalten, um anzugeben, wie viel von einem BLOB (in Byte) innerhalb einer Zeile gespeichert wird. Weitere Hinweise zur Festlegung von INLINE- und PREFIX-Werten finden Sie in den entsprechenden Abschnitten für die INLINE- und PREFIX-Klauseln unter CREATE TABLE-Anweisung.

    • INDEX- und NO INDEX-Klauseln   Verwenden Sie diese Klausel, um anzugeben, ob in dieser Spalte Indizes auf großen BLOBs aufgebaut werden sollen. Weitere Informationen zur Verwendung dieser Klausel finden Sie im entsprechenden Abschnitt für die [NO] INDEX-Klausel unter CREATE TABLE-Anweisung.

    • SET COMPUTE-Klausel   Verwenden Sie diese Klausel, um den der berechneten Spalte zugeordneten Ausdruck zu ändern. Die Werte in der Spalte werden bei Ausführung der Anweisung neu berechnet. Wenn der neue Ausdruck ungültig ist, schlägt die Anweisung fehl. Weitere Hinweise darüber, welche Angaben im COMPUTE-Ausdruck zulässig sind, finden Sie unter CREATE TABLE-Anweisung.

    • ALTER CONSTRAINT Integritätsregelname CHECK-Klausel   Verwenden Sie diese Klausel, um eine benannte Prüf-Integritätsregel für die Tabelle zu ändern.

  • Löschklauseln   Im folgenden Abschnitt werden die DROP-Klauseln erklärt:

    • DROP DEFAULT   Löscht den Standardwert, der für die Tabelle oder die angegebene Spalte gesetzt ist. Bestehende Werte ändern sich nicht.

    • DROP COMPUTE   Entfernt das COMPUTE-Attribut für die angegebene Spalte. Diese Anweisung ändert keine bestehenden Werte in der Tabelle.

    • DROP CHECK   Löscht alle Prüf-Integritätsregeln für die Tabelle oder angegebene Spalte. DELETE CHECK wird ebenfalls akzeptiert.

    • DROP CONSTRAINT Integritätsregelname   Löscht die benannte Integritätsregel für die Tabelle oder angegebene Spalte. DELETE CONSTRAINT wird ebenfalls akzeptiert.

    • DROP Spaltenname   Löscht die angegebene Spalte aus der Tabelle. DELETE Spaltenname wird ebenfalls akzeptiert. Wenn die Spalte in einem Index, einer Eindeutigkeits-Integritätsregel, einem Fremdschlüssel oder Primärschlüssel enthalten ist, muss der Index, die Integritätsregel oder der Schlüssel gelöscht werden, bevor die Spalte gelöscht werden kann. Dadurch werden die Prüf-Integritätsregeln, welche diese Spalte referenzieren, nicht gelöscht.

    • DROP UNIQUE ( Spaltenname ... )   Löscht die Eindeutigkeits-Integritätsregeln für die angegebene(n) Spalte(n). Alle Fremdschlüssel, die sich auf diese Eindeutigkeits-Integritätsregel beziehen, werden auch gelöscht. DELETE UNIQUE ( Spaltenname ... ) wird ebenfalls akzeptiert.

    • DROP FOREIGN KEY Fremdschlüsselname   Löscht den angegebenen Fremdschlüssel. DELETE FOREIGN KEY Fremdschlüsselname wird ebenfalls akzeptiert.

    • DROP PRIMARY KEY   Löscht den Primärschlüssel. Alle Fremdschlüssel, die sich auf den Primärschlüssel für diese Tabelle beziehen, werden auch gelöscht. DELETE PRIMARY KEY wird ebenfalls akzeptiert.

  • Umbenennungsklauseln   Im folgenden Abschnitt werden die Klauseln erklärt, die zum Umbenennen von Teilen einer Spalten- oder Definition verwendet werden:

    • RENAME neuer_Tabellenname   Ändert den Namen einer Tabelle in neuer_Tabellenname. Beachten Sie, dass alle Anwendungen, die den alten Tabellennamen benutzen, ebenfalls geändert werden müssen. Wenn der Umbenennungsvorgang erfolgreich war, müssen Fremdschlüssel mit ON UPDATE- oder ON DELETE-Aktionen gelöscht und neu erstellt werden, da die vom System erstellten Trigger, die diese Aktionen implementieren, weiterhin den alten Namen referenzieren.

    • RENAME Spaltenname TO neuer_Spaltenname   Ändert den Namen der Spalte in neuer_Spaltenname. Beachten Sie, dass alle Anwendungen, die den alten Spaltennamen benutzen, ebenfalls geändert werden müssen. Wenn der Umbenennungsvorgang erfolgreich war, müssen Fremdschlüssel mit ON UPDATE- oder ON DELETE-Aktionen gelöscht und neu erstellt werden, da die vom System erstellten Trigger, die diese Aktionen implementieren, weiterhin den alten Namen referenzieren.

    • RENAME CONSTRAINT Integritätsregelname TO neuer_Integritätsregelname   Ändert den Namen der Integritätsregel in neuer_Integritätsregelname.

  • Tabellenänderungsklauseln   Verwenden Sie diese Klausel, um die nachstehenden Tabellenattribute zu ändern.

    • PCTFREE DEFAULT   Verwenden Sie diese Klausel, um die PCTFREE-Einstellung für die Tabelle auf den Standardwert zu setzen (200 Byte für eine 4KByte-Seitengröße und höher).

    • REPLICATE { ON | OFF }   Verwenden Sie diese Klausel, um die Einstellung in Bezug auf die Verwendung dieser Tabelle bei der Replikation zu ändern. Wenn bei einer Tabelle REPLICATE ON eingestellt ist, werden alle Änderungen an der Tabelle zur Replikation an den Replication Server übertragen. Im Replication Server wird mithilfe der Replikationsdefinitionen entschieden, welche Tabellenänderungen zu den anderen Computern übertragen werden.

    • [ NOT ] ENCRYPTED   Verwenden Sie diese Klausel, um die Einstellung in Bezug auf die Tabellenverschlüsselung zu ändern. Um eine Tabelle zu verschlüsseln, muss die Tabellenverschlüsselung in der Datenbank aktiviert sein. Die Verschlüsselung erfolgt unter Verwendung des Chiffrierschlüssels und des Algorithmus, die bei der Datenbankerstellung festgelegt wurden. Weitere Hinweise finden Sie unter Tabellenverschlüsselung in der Datenbank aktivieren. Nach dem Verschlüsseln einer Tabelle bleiben Daten für diese Tabelle, die sich vor dem Verschlüsseln in temporären Dateien oder im Transaktionslog befanden, weiterhin unverschlüsselt zugänglich. Um dies zu verhindern, starten Sie die Datenbank neu, damit die temporären Dateien entfernt werden. Führen Sie das Sicherungsdienstprogramm (dbbackup) mit der Option -o aus oder verwenden Sie die BACKUP-Anweisung, um das Transaktionslog zu sichern und ein neues zu starten. Weitere Hinweise finden Sie unter Sicherungsdienstprogramm (dbbackup) oder BACKUP-Anweisung.

      Wenn die Tabellenverschlüsselung aktiviert ist, werden Tabellenseiten für die verschlüsselte Tabelle, zugeordnete Indexseiten, Seiten der temporären Tabelle und Transaktionslogseiten, die Transaktionen von verschlüsselten Tabellen enthalten, verschlüsselt.

  • DISABLE VIEW DEPENDENCIES-Klausel   Verwenden Sie diese Klausel, um abhängige reguläre Ansichten zu deaktivieren. Abhängige materialisierte Ansichten werden nicht deaktiviert. Sie müssen jede abhängige materialisierte Ansicht deaktivieren, in dem Sie die Anweisung ALTER MATERIALIZED VIEW ... DISABLE ausführen. Weitere Hinweise finden Sie unter ALTER MATERIALIZED VIEW-Anweisung.

Bemerkungen

Die ALTER TABLE-Anweisung ändert Tabellenattribute (Spaltendefinitionen, Integritätsregeln usw.) in einer bestehenden Tabelle.

Der Datenbankserver protokolliert Objektabhängigkeiten in der Datenbank. Änderungen am Schema einer Tabelle können sich auf abhängige Ansichten auswirken. Wenn materialisierte Ansichten vorhanden sind, die von der zu ändernden Tabelle abhängen, müssen Sie diese zuerst deaktivieren. Hierfür verwenden Sie die ALTER MATERIALIZED VIEW... DISABLE-Anweisung. Weitere Hinweise zu Ansichtenabhängigkeiten finden Sie unter Ansichtenabhängigkeiten.

ALTER TABLE kann nicht für eine lokale, temporäre Tabelle verwendet werden.

ALTER TABLE wird verhindert, wenn die Anweisung eine Tabelle betrifft, die zeitgleich von einer anderen Verbindung benutzt wird. ALTER TABLE kann zeitaufwändig sein. Der Datenbankserver verarbeitet während der Anweisungsverarbeitung keine Anforderungen, die sich auf die Tabelle beziehen.

Weitere Hinweise zur CLUSTERED-Option finden Sie unter Clustered-Indizes verwenden.

Wenn Sie eine Spalte ändern, für die ein als IMMEDIATE REFRESH festgelegter Textindex besteht, wird der Textindex sofort neu aufgebaut. Wenn der Textindex als AUTO REFRESH oder MANUAL REFRESH definiert ist, wird der Textindex bei der nächsten Aktualisierung neu aufgebaut.

Wenn Sie die ALTER TABLE-Anweisung ausführen, versucht der Datenbankserver, Spaltenberechtigungen für abhängige Ansichten wiederherzustellen, die automatisch neu kompiliert werden. Berechtigungen für Spalten, die in den neu kompilierten Ansichten nicht mehr existieren, gehen verloren.

Berechtigungen

Eine der folgenden Bedingungen muss erfüllt sein:

  • Eigentümer der Tabelle

  • Benutzer mit DBA-Berechtigung

  • Ein Benutzer, der die Berechtigung ALTER für die Tabelle erhalten hat

ALTER TABLE erfordert exklusiven Zugriff auf die Tabelle.

Globale temporäre Tabellen können erst geändert werden, wenn alle Benutzer, welche die Tabelle referenzieren, ihre Verbindungen getrennt haben.

Kann nicht mit einer Snapshot-Transaktion verwendet werden. Weitere Hinweise finden Sie unter Snapshot-Isolation.

Nebenwirkungen

Automatisches Festschreiben (Autocommit).

Ein Checkpoint wird zu Beginn des ALTER TABLE-Vorgangs ausgeführt, und weitere Checkpoints werden vorübergehend unterbrochen, bis der ALTER TABLE-Vorgang abgeschlossen ist.

Sobald Sie eine Spalte oder Tabelle ändern, wird möglicherweise die Ausführung aller gespeicherten Prozeduren, Ansichten oder sonstigen Elemente, welche die geänderte Spalte referenzieren, beendet.

Wenn Sie die deklarierte Länge oder den Typ einer Spalte ändern oder eine Spalte löschen, wird die Statistik für diese Spalte gelöscht. Weitere Informationen zur Generierung neuer Statistiken finden Sie unter Spaltenstatistiken aktualisieren, um die Performance des Optimierers zu verbessern.

Siehe auch
Standards und Kompatibilität
  • SQL/2003   ADD COLUMN ist eine Kernfunktion. Andere Klauseln sind Erweiterungen des Herstellers oder Implementierungen von bestimmten, benannten Erweiterungen zu SQL/2003.

Beispiel

Im folgenden Beispiel wird eine neue Zeitstempelspalte namens TimeStamp der Tabelle Customers hinzugefügt.

ALTER TABLE Customers 
   ADD TimeStamp AS TIMESTAMP DEFAULT TIMESTAMP;

Im folgenden Beispiel wird die neue Zeitstempelspalte TimeStamp gelöscht, die Sie im vorherigen Beispiel erstellt haben.

ALTER TABLE Customers
DROP TimeStamp;

Die Street-Spalte in der Tabelle Customers kann gegenwärtig bis zu 35 Zeichen enthalten. Damit sie bis zu 50 Zeichen umfassen kann, führen Sie Folgendes aus:

ALTER TABLE Customers
ALTER Street CHAR(50);

Mit dem folgenden Beispiel wird eine Spalte zur Customers-Tabelle eingefügt, wobei jedem Kunden ein "sales contact" (Ansprechpartner) zugewiesen wird.

ALTER TABLE Customers
ADD SalesContact INTEGER
REFERENCES Employees ( EmployeeID )
ON UPDATE CASCADE
ON DELETE SET NULL;

Dieser Fremdschlüssel wurde mit kaskadierenden Aktualisierungen konstruiert und wird bei Löschungen auf NULL gesetzt. Wenn sich die Mitarbeiterkennung eines Angestellten ändert, wird die Spalte entsprechend aktualisiert. Wenn ein Angestellter das Unternehmen verlässt und seine Kennung gelöscht wird, wird die Spalte auf den Wert NULL gesetzt.

Im folgenden Beispiel wird ein Fremdschlüssel FK_SalesRepresentative_EmployeeID2, für die Spalte SalesOrders.SalesRepresentative erstellt und mit Employees.EmployeeID verknüpft:

ALTER TABLE GROUPO.SalesOrders
   ADD CONSTRAINT FK_SalesRepresentative_EmployeeID2
   FOREIGN KEY ( SalesRepresentative ) 
   REFERENCES GROUPO.Employees (EmployeeID);