Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
ALTER TABLE
ALTER TABLE ändert die Definition einer Tabelle.
Unterstützte Syntax
ALTER TABLE [ IF EXISTS ] [ ONLY ] name [ * ] action [, ... ] ALTER TABLE [ IF EXISTS ] [ ONLY ] name [ * ] RENAME [ COLUMN ] column_name TO new_column_name ALTER TABLE [ IF EXISTS ] [ ONLY ] name [ * ] RENAME CONSTRAINT constraint_name TO new_constraint_name ALTER TABLE [ IF EXISTS ] name RENAME TO new_name ALTER TABLE [ IF EXISTS ] name SET SCHEMA new_schema ALTER TABLE ASYNC [ IF EXISTS ] [ ONLY ] name [ * ] VALIDATE CONSTRAINT constraint_name where action is one of: ADD [ COLUMN ] [ IF NOT EXISTS ] column_name data_type [ STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN | DEFAULT } ] DROP [ COLUMN ] [ IF EXISTS ] column_name [ RESTRICT | CASCADE ] ALTER [ COLUMN ] column_name SET DEFAULT expression ALTER [ COLUMN ] column_name DROP DEFAULT ALTER [ COLUMN ] column_name DROP NOT NULL ALTER [ COLUMN ] column_name DROP EXPRESSION [ IF EXISTS ] ALTER [ COLUMN ] column_name ADD GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY [ ( sequence_options ) ] ALTER [ COLUMN ] column_name { SET GENERATED { ALWAYS | BY DEFAULT } | SET sequence_option | RESTART [ [ WITH ] restart ] } [...] ALTER [ COLUMN ] column_name DROP IDENTITY [ IF EXISTS ] ALTER [ COLUMN ] column_name SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN | DEFAULT } ADD table_constraint NOT VALID ADD table_constraint_using_index DROP CONSTRAINT [ IF EXISTS ] constraint_name [ RESTRICT | CASCADE ] OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER } and table_constraint is: [ CONSTRAINT constraint_name ] CHECK ( expression ) and table_constraint_using_index is: [ CONSTRAINT constraint_name ] UNIQUE USING INDEX index_name
Description
ADD [ COLUMN ] [ IF NOT EXISTS ]-
Dieses Formular fügt der Tabelle eine neue Spalte hinzu, wobei dieselbe Syntax wie verwendet wirdCREATE TABLE. Wenn angegeben
IF NOT EXISTSist und bereits eine Spalte mit diesem Namen vorhanden ist, wird kein Fehler ausgegeben. DROP [ COLUMN ] [ IF EXISTS ]-
Dieses Formular löscht eine Spalte aus einer Tabelle. Indizes und Tabelleneinschränkungen, die die Spalte betreffen, werden automatisch gelöscht, mit Ausnahme von Primärschlüsseleinschränkungen. Das Löschen von Primärschlüsselspalten wird nicht unterstützt. Multivariate Statistiken, die auf die gelöschte Spalte verweisen, werden ebenfalls entfernt, wenn das Entfernen der Spalte dazu führen würde, dass die Statistik nur Daten für eine einzelne Spalte enthält. Sie müssen angeben,
CASCADEob etwas außerhalb der Tabelle von der Spalte abhängt, z. B. Fremdschlüsselverweise oder Ansichten. Wenn angegebenIF EXISTSist und die Spalte nicht existiert, wird kein Fehler ausgegeben. In diesem Fall wird stattdessen eine Mitteilung ausgegeben. SET/DROP DEFAULT-
Diese Formulare setzen oder entfernen den Standardwert für eine Spalte (wobei das Entfernen dem Setzen des Standardwerts auf NULL entspricht). Der neue Standardwert gilt nur für nachfolgende
INSERTUPDATEOR-Befehle; Zeilen, die sich bereits in der Tabelle befinden, werden dadurch nicht geändert. DROP NOT NULL-
Dieses Formular ändert eine Spalte so, dass Nullwerte zulässig sind.
DROP EXPRESSION [ IF EXISTS ]-
Dieses Formular wandelt eine gespeicherte generierte Spalte in eine normale Basisspalte um. Die vorhandenen Daten in den Spalten werden beibehalten, aber bei zukünftigen Änderungen wird der Generierungsausdruck nicht mehr angewendet. Wenn angegeben
DROP EXPRESSION IF EXISTSist und es sich bei der Spalte nicht um eine generierte Spalte handelt, wird kein Fehler ausgegeben. In diesem Fall wird stattdessen eine Mitteilung ausgegeben. ADD GENERATED { ALWAYS | BY DEFAULT } AS IDENTITYSET GENERATED { ALWAYS | BY DEFAULT }DROP IDENTITY [ IF EXISTS ]-
Diese Formulare ändern, ob es sich bei einer Spalte um eine Identitätsspalte handelt, oder sie ändern das Generierungsattribut einer vorhandenen Identitätsspalte. Details dazu finden Sie unter CREATE TABLE.
SET DEFAULTEbenso wirken sich diese Formulare nur auf das Verhalten nachfolgenderINSERTUPDATEUND-Befehle aus; sie bewirken nicht, dass sich bereits in der Tabelle enthaltene Zeilen ändern.Das
sequence_optionist eine Option, die von ALTER SEQUENCE folgenden unterstützt wirdINCREMENT BY. Diese Formulare ändern die Reihenfolge, die einer vorhandenen Identitätsspalte zugrunde liegt.Anmerkung
Amazon Aurora DSQL erfordert bei der Verwendung einen expliziten
CACHEWert.ADD GENERATED AS IDENTITYDarüber hinaus werden Identitätsspalten nur fürbigintSpalten unterstützt.Bei der Verwendung von Identitätsspalten sollte der Cache-Wert sorgfältig abgewogen werden. Weitere Informationen finden Sie im Callout Wichtig auf der CREATE SEQUENCE Seite.
Hinweise zur optimalen Verwendung von Identitätsspalten auf der Grundlage von Workload-Mustern finden Sie unterArbeiten mit Sequenzen und Identitätsspalten.
SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN | DEFAULT }-
Dieses Formular legt den Speichermodus für eine Spalte fest. Einzelheiten zu den verfügbaren Speichermodi finden Sie Speichermodus auf der CREATE TABLE Seite.
ADDtable_constraintNOT VALID-
Dieses Formular fügt einer Tabelle eine neue
CHECKEinschränkung hinzu. In Aurora DSQLALTER TABLE ADD CONSTRAINTmüssenCHECKEinschränkungen, die über hinzugefügt wurden, dieNOT VALIDOption verwenden. Aurora DSQL erstellt die Einschränkung, validiert sie jedoch nicht sofort anhand vorhandener Daten. Dadurch kann die Einschränkung hinzugefügt werden, ohne die gesamte Tabelle zu scannen. Die Einschränkung gilt sofort für alle neuen Zeilen und Aktualisierungen.Nach dem Hinzufügen einer Einschränkung mit wird überprüft
NOT VALIDALTER TABLE ASYNC ... VALIDATE CONSTRAINT, ob die vorhandenen Daten die Einschränkung ebenfalls erfüllen. Die Validierung wird als asynchroner DDL-Job ausgeführt. Sie können den Fortschritt mit überwachen.sys.jobs ADDtable_constraint_using_index-
Dieses Formular fügt einer Tabelle eine neue
UNIQUEEinschränkung hinzu, die auf einem vorhandenen eindeutigen Index basiert. Alle Spalten des Indexes werden in die Einschränkung aufgenommen.Der Index muss sich in einem
VALIDStatus befinden. Das Hinzufügen einer eindeutigen Einschränkung mithilfe eines Indexes, während der Index gerade erstellt wird, wird nicht unterstützt.Wenn ein Constraint-Name angegeben wird, wird der Index umbenannt, sodass er dem Constraint-Namen entspricht. Andernfalls wird die Einschränkung genauso benannt wie der Index.
Nachdem dieser Befehl ausgeführt wurde, „gehört“ der Index der Beschränkung, auf die gleiche Weise, als ob der Index durch einen regulären
CREATE UNIQUE INDEX ASYNCBefehl erstellt worden wäre. Insbesondere führt das Löschen der Beschränkung dazu, dass auch der Index verschwindet. VALIDATE CONSTRAINT-
Dieses Formular validiert eine Einschränkung, die zuvor mit der
NOT VALIDOption erstellt wurde. Dieser Befehl ist ein asynchroner DDL-Vorgang, der andere Transaktionen nicht blockiert. Wenn SieALTER TABLE ASYNC ... VALIDATE CONSTRAINTausführen, gibt Aurora DSQL sofort einejob_idzurück.Sie können den Status dieses asynchronen Auftrags mithilfe der
sys.jobs-Systemansicht überwachen. Sie können es auch verwendensys.wait_for_job(, um die aktuelle Sitzung zu blockieren, bis die Überprüfung abgeschlossen ist oder fehlschlägt.'job_id')Der Validierungsauftrag scannt die gesamte Tabelle, um sicherzustellen, dass alle vorhandenen Zeilen die Einschränkung erfüllen. Sobald die Validierung erfolgreich abgeschlossen ist, markiert Aurora DSQL die Einschränkung als gültig und der Abfrageplaner setzt sie für alle Abfragen durch. Wenn die Validierung fehlschlägt, weil vorhandene Zeilen gegen die Einschränkung verstoßen, schlägt der Job fehl und die Einschränkung verbleibt im
NOT VALIDStatus.Mit diesem Befehl werden nur Einschränkungen überprüft, die Sie mit der
NOT VALIDOption erstellt haben. Der Versuch, eine bereits gültige Einschränkung zu überprüfen, führt zu einem Fehler. DROP CONSTRAINT [ IF EXISTS ]-
Dieses Formular löscht die angegebene Einschränkung für eine Tabelle zusammen mit allen Indizes, die der Beschränkung zugrunde liegen. Wenn angegeben
IF EXISTSist und die Einschränkung nicht existiert, wird kein Fehler ausgegeben. In diesem Fall wird stattdessen eine Mitteilung ausgegeben. OWNER TO-
Dieses Formular ändert den Besitzer der Tabelle in den angegebenen Benutzer.
RENAME-
Die
RENAMEFormulare ändern den Namen einer Tabelle, den Namen einer einzelnen Spalte in einer Tabelle oder den Namen einer Einschränkung der Tabelle. Beim Umbenennen einer Einschränkung, der ein Index zugrunde liegt, wird auch der Index umbenannt. Es hat keine Auswirkung auf die gespeicherten Daten. SET SCHEMA-
Dieses Formular verschiebt die Tabelle in ein anderes Schema. Die zugehörigen Indizes, Einschränkungen und Sequenzen, die den Tabellenspalten gehören, werden ebenfalls verschoben.
Parameters
IF EXISTS-
Gibt keinen Fehler aus, wenn die Tabelle nicht existiert. In diesem Fall wird eine Mitteilung ausgegeben.
name-
Der Name (optional schemaqualifiziert) einer vorhandenen Tabelle, die geändert werden soll. Wenn vor dem Tabellennamen angegeben
ONLYist, wird nur diese Tabelle geändert. Wenn nichtONLYangegeben, werden die Tabelle und alle ihre untergeordneten Tabellen (falls vorhanden) geändert.*Kann optional nach dem Tabellennamen angegeben werden, um explizit anzugeben, dass untergeordnete Tabellen enthalten sind. column_name-
Name einer neuen oder vorhandenen Spalte.
new_column_name-
Neuer Name für eine vorhandene Spalte.
new_name-
Neuer Name für die Tabelle.
data_type-
Datentyp der neuen Spalte.
table_constraint-
Eine
CHECKEinschränkungsdefinition. In Aurora DSQL müssenCHECKEinschränkungen mit derNOT VALIDOption usingALTER TABLE ADD CONSTRAINThinzugefügt werden. Die vollständigeCHECKEinschränkungssyntax finden CREATE TABLE Sie unter. constraint_name-
Name einer neuen oder vorhandenen Einschränkung.
CASCADE-
Löschen Sie automatisch Objekte, die von der gelöschten Spalte oder Einschränkung abhängen (z. B. Ansichten, die auf die Spalte verweisen), und wiederum alle Objekte, die von diesen Objekten abhängen.
RESTRICT-
Weigern Sie sich, die Spalte oder Einschränkung zu löschen, wenn abhängige Objekte vorhanden sind. Dies ist das Standardverhalten.
new_owner-
Der Benutzername des neuen Besitzers der Tabelle.
new_schema-
Der Name des Schemas, in das die Tabelle verschoben wird.
Hinweise
Das DROP COLUMN Formular entfernt die Spalte nicht physisch, sondern macht sie für SQL-Operationen einfach unsichtbar. Bei nachfolgenden Einfüge- und Aktualisierungsvorgängen in der Tabelle wird ein Nullwert für die Spalte gespeichert. Das Löschen einer Spalte geht also schnell, aber die Größe Ihrer Tabelle auf der Festplatte wird dadurch nicht sofort reduziert, da der von der gelöschten Spalte belegte Speicherplatz nicht zurückgewonnen wird. Der Speicherplatz wird im Laufe der Zeit wieder freigegeben, wenn vorhandene Zeilen aktualisiert werden.
Wenn im Primärschlüssel auf eine gelöschte Spalte als INCLUDE Spalte verwiesen wird, wird die Primärschlüsseldefinition aktualisiert, um die gelöschte Spalte zu entfernen.
Eine Tabelle in Aurora DSQL kann maximal 255 aktive Spalten gleichzeitig und während der gesamten Lebensdauer der Tabelle maximal 1600 Spalten enthalten. Durch das Löschen einer Spalte wird ihre Attributnummer nicht zurückgeholt. Es entfernt sie aus der Gruppe der aktiven Spalten, aber die gelöschte Spalte wird weiterhin auf das Gültigkeitslimit von 1600 Spalten angerechnet. Weitere Informationen finden Sie unter Datenbanklimits in Aurora DSQL.