View a markdown version of this page

ALTER TABLE - Amazon Aurora DSQL

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 EXISTS ist 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, CASCADE ob etwas außerhalb der Tabelle von der Spalte abhängt, z. B. Fremdschlüsselverweise oder Ansichten. Wenn angegeben IF EXISTS ist 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 INSERT UPDATE OR-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 EXISTS ist 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 IDENTITY
SET 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 nachfolgender INSERT UPDATE UND-Befehle aus; sie bewirken nicht, dass sich bereits in der Tabelle enthaltene Zeilen ändern.

Das sequence_option ist 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 CACHE Wert. ADD GENERATED AS IDENTITY Darüber hinaus werden Identitätsspalten nur für bigint Spalten 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.

ADD table_constraint NOT VALID

Dieses Formular fügt einer Tabelle eine neue CHECK Einschränkung hinzu. In Aurora DSQL ALTER TABLE ADD CONSTRAINT müssen CHECK Einschränkungen, die über hinzugefügt wurden, die NOT VALID Option 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

ADD table_constraint_using_index

Dieses Formular fügt einer Tabelle eine neue UNIQUE Einschrä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 VALID Status 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 ASYNC Befehl 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 VALID Option erstellt wurde. Dieser Befehl ist ein asynchroner DDL-Vorgang, der andere Transaktionen nicht blockiert. Wenn Sie ALTER TABLE ASYNC ... VALIDATE CONSTRAINT ausführen, gibt Aurora DSQL sofort eine job_id zurück.

Sie können den Status dieses asynchronen Auftrags mithilfe der sys.jobs-Systemansicht überwachen. Sie können es auch verwendensys.wait_for_job('job_id'), um die aktuelle Sitzung zu blockieren, bis die Überprüfung abgeschlossen ist oder fehlschlägt.

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 VALID Status.

Mit diesem Befehl werden nur Einschränkungen überprüft, die Sie mit der NOT VALID Option 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 EXISTS ist 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 RENAME Formulare ä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 ONLY ist, wird nur diese Tabelle geändert. Wenn nicht ONLY angegeben, 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 CHECK Einschränkungsdefinition. In Aurora DSQL müssen CHECK Einschränkungen mit der NOT VALID Option using ALTER TABLE ADD CONSTRAINT hinzugefügt werden. Die vollständige CHECK Einschrä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.