Löschen von Einschränkungen

Einschränkungen werden mit dem Befehl ALTER TABLE gelöscht:

  • ALTER TABLE … DROP CONSTRAINT … löscht die angegebene Einschränkung explizit. Ähnlich wie beim Ändern von Einschränkungen kann die Einschränkung durch den Einschränkungsnamen oder die Spaltendefinition sowie den Einschränkungstyp identifiziert werden. Bei einem Primärschlüssel können sie auch mit dem Schlüsselwort PRIMARY KEY identifiziert werden.

  • ALTER TABLE … DROP COLUMN … löscht eine Spalte und die zugehörigen Einschränkungen.

Wenn ein Primärschlüssel/eindeutiger Schlüssel gelöscht wird, werden standardmäßig auch alle Fremdschlüssel gelöscht, die auf den gelöschten Schlüssel verweisen, sofern nicht die Löschoption RESTRICT angegeben ist.

Außerdem werden Einschränkungen gelöscht, wenn die zugehörigen Tabellen/Schemas/Datenbanken gelöscht werden. Die DROP-Befehle unterstützen die Löschoptionen CASCADE | RESTRICT.

Bemerkung

Gelöschte Tabellen, Schemas und Datenbanken können mit dem Befehl UNDROP wiederhergestellt werden. Gelöschte Spalten und Einschränkungen können nicht wiederhergestellt werden.

Unter diesem Thema:

Löschen von Einschränkungen

Eindeutige/primäre/Fremdschlüsseleinschränkungen können explizit gelöscht werden (mithilfe von ALTER TABLE … DROP CONSTRAINT …):

ALTER TABLE <table_name> DROP { CONSTRAINT <name> | PRIMARY KEY | { UNIQUE | FOREIGN KEY } (<column>, [ ... ] ) } [ CASCADE | RESTRICT ]

Wenn Sie bei diesen Einschränkungen eine Fremdschlüsseleinschränkung oder Einschränkung eines primären/eindeutigen Schlüssels löschen, der keine Fremdschlüsselverweise aufweist, werden die Einschränkungen direkt gelöscht.

Die standardmäßige Löschoption ist CASCADE. Dies bedeutet, dass beim Löschen eines eindeutigen/primären Schlüssels mit Fremdschlüsselverweisen alle verweisenden Fremdschlüssel zusammen mit dem eindeutigen/primären Schlüssel gelöscht werden.

  • Wenn die Löschoption RESTRICT angegeben ist, wird beim Löschen eines primären/eindeutigen Schlüssels ein Fehler zurückgegeben, wenn Fremdschlüssel vorhanden sind, die auf die zu löschenden Schlüssel verweisen.

Löschen von Spalten

Das Löschen von Spalten mit ALTER TABLE … DROP COLUMN … ähnelt dem Löschen von Einschränkungen:

ALTER TABLE <table_name> DROP COLUMN <name> [ CASCADE | RESTRICT ]

Die standardmäßige Löschoption ist CASCADE. Dies bedeutet, dass alle Einschränkungen, die die zu löschende Spalte enthalten, ebenfalls gelöscht werden. Wenn andere Fremdschlüsseleinschränkungen auf einen Primärschlüssel/eindeutigen Schlüssel verweisen, der die Spalte enthält, werden alle verweisenden Fremdschlüssel gelöscht.

  • Falls die Option RESTRICT angegeben ist, wird ein Fehler zurückgegeben, wenn die Spalte primäre/eindeutige Schlüssel mit Fremdschlüsselverweisen aufweist. Der Löschbefehl ist nur dann erfolgreich, wenn für die gelöschte Spalte keine Einschränkungen definiert sind und sich keine Einschränkungen auf sie beziehen.

Löschen von Tabellen/Schemas/Datenbanken

Der Befehl DROP löscht die angegebene Tabelle, das angegebene Schema oder die angegebene Datenbank und kann auch verwendet werden, um alle mit dem Objekt verknüpften Einschränkungen zu löschen:

DROP { TABLE | SCHEMA | DATABASE } <name> [ CASCADE | RESTRICT ]

Ähnlich wie beim Löschen von Spalten und Einschränkungen ist CASCADE die Standardoption zum Löschen. Alle Einschränkungen, die zu dem Objekt gehören oder auf das Objekt verweisen, werden ebenfalls gelöscht.

Wenn zum Beispiel beim Löschen einer Datenbank die Datenbank einen primären/eindeutigen Schlüssel enthält, auf den ein Fremdschlüssel aus einer anderen Datenbank verweist, werden auch die verweisenden Fremdschlüssel gelöscht.

Wenn das Objekt später wiederhergestellt wird, werden alle zuvor gelöschten Einschränkungen wiederhergestellt.

Falls die Option RESTRICT angegeben ist, wird ein Fehler zurückgegeben, wenn primäre/eindeutige Einschränkungen unter dem Objekt Fremdschlüsselverweise aufweisen.