Wer kann eine Tabelle ändern?
Die ALTER TABLE
-Anweisung kann ausgeführt werden durch:
-
Der Besitzer der Tabelle
-
Benutzer mit der Berechtigung
ALTER ANY TABLE
Umbenennen einer Spalte: die TO-Klausel
Ändern des Datentyps einer Spalte: die TYPE-Klausel
Ändern der Position einer Spalte: die POSITION-Klausel
Die Klauseln DROP DEFAULT und SET DEFAULT
Die Klauseln SET NOT NULL und DROP NOT NULL
Die Klauseln COMPUTED [BY] oder GENERATED ALWAYS AS
Die ALTER TABLE
-Anweisung kann ausgeführt werden durch:
Der Besitzer der Tabelle
Benutzer mit der Berechtigung ALTER ANY TABLE
ALTER TABLE
Hinzufügen der Spalte "CAPITAL" zur Tabelle "COUNTRY".
ALTER TABLE COUNTRY
ADD CAPITAL VARCHAR(25);
Hinzufügen der Spalte "CAPITAL" mit den Einschränkungen "NOT NULL" und "UNIQUE" und Löschen der Spalte "CURRENCY".
ALTER TABLE COUNTRY
ADD CAPITAL VARCHAR(25) NOT NULL UNIQUE,
DROP CURRENCY;
Hinzufügen der Prüfbedingung CHK_SALARY
und eines Fremdschlüssels zur Tabelle JOB
.
ALTER TABLE JOB
ADD CONSTRAINT CHK_SALARY CHECK (MIN_SALARY < MAX_SALARY),
ADD FOREIGN KEY (JOB_COUNTRY) REFERENCES COUNTRY (COUNTRY);
Festlegen des Standardwerts für das Feld "MODEL", Ändern des Typs der Spalte "ITEMID" und Umbenennen der Spalte MODELNAME.
ALTER TABLE STOCK
ALTER COLUMN MODEL SET DEFAULT 1,
ALTER COLUMN ITEMID TYPE BIGINT,
ALTER COLUMN MODELNAME TO NAME;
Neustart der Sequenz einer Identitätsspalte.
ALTER TABLE objects
ALTER ID RESTART WITH 100;
Ändern der berechneten Spalten NEW_SALARY
und SALARY_CHANGE
.
ALTER TABLE SALARY_HISTORY
ALTER NEW_SALARY GENERATED ALWAYS AS
(OLD_SALARY + OLD_SALARY * PERCENT_CHANGE / 100),
ALTER SALARY_CHANGE COMPUTED BY
(OLD_SALARY * PERCENT_CHANGE / 100);
ADD
-KlauselMit der ADD
-Klausel können Sie eine neue Spalte oder eine neue Tabelleneinschränkung hinzufügen.Die Syntax zum Definieren der Spalte und die Syntax zum Definieren der Tabelleneinschränkung entsprechen denen, die für die CREATE TABLE
-Anweisung beschrieben wurden.
Jedes Mal, wenn eine neue Spalte hinzugefügt wird, wird der Metadatenänderungszähler um eins erhöht
Das Hinzufügen einer neuen Tabelleneinschränkung erhöht nicht den Metadatenänderungszähler
Caution
|
Zu beachtende Punkte
|
DROP
-KlauselDie Klausel DROP colname
löscht die angegebene Spalte aus der Tabelle.Ein Versuch, eine Spalte zu löschen, schlägt fehl, wenn etwas darauf verweist.Betrachten Sie die folgenden Elemente als Quellen potenzieller Abhängigkeiten:
Spalten- oder Tabellenbeschränkungen
Indizes
gespeicherte Prozeduren und Trigger
Aufrufe
Jedes Mal, wenn eine Spalte gelöscht wird, wird der Metadaten-Änderungszähler der Tabelle um eins erhöht.
DROP CONSTRAINT
-KlauselDie Klausel DROP CONSTRAINT
löscht die angegebene Einschränkung auf Spalten- oder Tabellenebene.
Eine PRIMARY KEY
- oder UNIQUE
-Schlüsseleinschränkung kann nicht gelöscht werden, wenn sie von einer FOREIGN KEY
-Einschränkung in einer anderen Tabelle referenziert wird.Es wird notwendig sein, diese FOREIGN KEY
-Beschränkung zu löschen, bevor versucht wird, die PRIMARY KEY
- oder UNIQUE
-Schlüssel-Beschränkung, auf die sie verweist, zu löschen.
Das Löschen einer Spalteneinschränkung oder einer Tabelleneinschränkung erhöht den Metadatenänderungszähler nicht.
ALTER [COLUMN]
-KlauselMit der ALTER [COLUMN]
-Klausel können Attribute vorhandener Spalten geändert werden, ohne dass die Spalte gelöscht und erneut hinzugefügt werden muss.Erlaubte Modifikationen sind:
den Namen ändern (hat keinen Einfluss auf den Metadaten-Änderungszähler)
den Datentyp ändern (erhöht den Metadaten-Änderungszähler um eins)
die Spaltenposition in der Spaltenliste der Tabelle ändern (hat keinen Einfluss auf den Metadaten-Änderungszähler)
den Standardspaltenwert löschen (hat keinen Einfluss auf den Metadaten-Änderungszähler)
einen Standardspaltenwert festlegen oder den vorhandenen Standardwert ändern (hat keinen Einfluss auf den Metadatenänderungszähler)
Typ und Ausdruck für eine berechnete Spalte ändern (hat keinen Einfluss auf den Metadaten-Änderungszähler)
Setzen Sie die Einschränkung NOT NULL
(hat keinen Einfluss auf den Metadaten-Änderungszähler)
lösche die NOT NULL
-Beschränkung (hat keinen Einfluss auf den Metadaten-Änderungszähler)
Ändern Sie den Typ einer Identitätsspalte oder ändern Sie eine Identitätsspalte in eine normale Spalte
eine Identitätsspalte neu starten
Inkrement einer Identitätsspalte ändern
TO
-KlauselDas Schlüsselwort TO
mit einem neuen Bezeichner benennt eine vorhandene Spalte um.Die Tabelle darf keine vorhandene Spalte mit demselben Bezeichner aufweisen.
Es ist nicht möglich, den Namen einer Spalte zu ändern, die in einer Einschränkung enthalten ist: PRIMARY KEY
, UNIQUE
-Schlüssel, FOREIGN KEY
, Spaltenbeschränkung oder die CHECK
-Beschränkung der Tabelle.
Das Umbenennen einer Spalte ist auch nicht zulässig, wenn die Spalte in einem Trigger, einer gespeicherten Prozedur oder einer Ansicht verwendet wird.
TYPE
-KlauselDas Schlüsselwort TYPE
ändert den Datentyp einer existierenden Spalte in einen anderen zulässigen Typ.Eine Typänderung, die zu Datenverlust führen könnte, wird nicht zugelassen.Beispielsweise darf die Anzahl der Zeichen im neuen Typ für eine CHAR
- oder VARCHAR
-Spalte nicht kleiner sein als die dafür vorhandene Spezifikation.
Wurde die Spalte als Array deklariert, darf weder der Typ noch die Anzahl der Dimensionen geändert werden.
Der Datentyp einer Spalte, die an einem Fremdschlüssel, Primärschlüssel oder einer eindeutigen Einschränkung beteiligt ist, kann nicht geändert werden.
POSITION
-KlauselDas Schlüsselwort POSITION ändert die Position einer vorhandenen Spalte im fiktiven "von links nach rechts"-Layout des Datensatzes.
Die Nummerierung der Spaltenpositionen beginnt bei 1.
Wenn eine Position kleiner als 1 angegeben wird, wird eine Fehlermeldung zurückgegeben
Wenn eine Positionsnummer größer als die Anzahl der Spalten in der Tabelle ist, wird ihre neue Position stillschweigend an die Anzahl der Spalten angepasst.
DROP DEFAULT
und SET DEFAULT
Die optionale DROP DEFAULT
-Klausel löscht den Standardwert für die Spalte, wenn er zuvor durch eine CREATE TABLE
- oder ALTER TABLE
-Anweisung dort abgelegt wurde.
Wenn die Spalte auf einer Domäne mit einem Standardwert basiert, wird der Standardwert auf den Domänenstandard zurückgesetzt
Ein Ausführungsfehler wird ausgelöst, wenn versucht wird, den Standardwert einer Spalte zu löschen, die keinen Standardwert hat oder deren Standardwert domänenbasiert ist
Die optionale SET DEFAULT
-Klausel setzt einen Standardwert für die Spalte.Wenn die Spalte bereits einen Standardwert hat, wird dieser durch den neuen ersetzt.Der auf eine Spalte angewendete Standardwert überschreibt immer einen von einer Domäne geerbten Wert.
DROP TABLE
Löschen (Löschen) einer Tabelle
DSQL, ESQL
DROP TABLE tablename
Parameter | Beschreibung |
---|---|
tablename |
Name (Bezeichner) der Tabelle |
Die Anweisung DROP TABLE
löscht (löscht) eine vorhandene Tabelle.Wenn die Tabelle Abhängigkeiten aufweist, schlägt die Anweisung DROP TABLE
mit einem Ausführungsfehler fehl.
Wenn eine Tabelle gelöscht wird, werden auch alle ihre Trigger und Indizes gelöscht.
Die DROP TABLE
-Anweisung kann ausgeführt werden durch:
Der Besitzer der Tabelle
Benutzer mit dem Privileg DROP ANY TABLE
DROP TABLE
DROP TABLE COUNTRY;
RECREATE TABLE
Erstellen einer neuen Tabelle (Relation) oder Wiederherstellen einer bestehenden Tabelle
DSQL
RECREATE [GLOBAL TEMPORARY] TABLE tablename [EXTERNAL [FILE] 'filespec'] (<col_def> [, {<col_def> | <tconstraint>} ...]) [{<table_attrs> | <gtt_table_attrs>}]
Siehe Abschnitt CREATE TABLE
für die vollständige Syntax von CREATE TABLE
und Beschreibungen zur Definition von Tabellen, Spalten und Einschränkungen.
RECREATE TABLE
erstellt oder erstellt eine Tabelle neu.Existiert bereits eine Tabelle mit diesem Namen, versucht die Anweisung RECREATE TABLE
, sie zu löschen und eine neue zu erstellen.Vorhandene Abhängigkeiten verhindern die Ausführung der Anweisung.
RECREATE TABLE
RECREATE TABLE COUNTRY (
COUNTRY COUNTRYNAME NOT NULL PRIMARY KEY,
CURRENCY VARCHAR(10) NOT NULL
);