Um einen Constraint in PostgreSQL zu löschen, verwendest du den Befehl ALTER TABLE gefolgt von
der Klausel DROP CONSTRAINT und gibst den Namen des zu löschenden
Constraints an. Sei vorsichtig, denn das kann zu Problemen mit der Datenintegrität führen.
Grundlegende Syntax:
ALTER TABLE table_name
DROP CONSTRAINT constraint_name;
Bevor du weiterliest, möchte ich dir kurz unseren modernen und schnellen PostgreSQL-Datenbankmanager Beekeeper Studio vorstellen. Mit seinem Editor für Tabellenstrukturen entfernst du einen Fremdschlüssel oder einen Unique-Index mit einem Klick, und für PostgreSQL ist er kostenlos – hier herunterladen.
Arten von Constraints in PostgreSQL
Bevor du lernst, wie man Constraints löscht, solltest du die gängigen Arten von Constraints kennen:
- Primärschlüssel
- Fremdschlüssel
- Unique
- Check
Einen Primärschlüssel-Constraint löschen
Ein Primärschlüssel identifiziert jeden Datensatz in einer Tabelle eindeutig.
Beispiel:
Angenommen, wir haben eine Tabelle users:
CREATE TABLE users (
user_id serial PRIMARY KEY,
username VARCHAR (50) UNIQUE NOT NULL
);
So löschst du den Primärschlüssel-Constraint:
ALTER TABLE users
DROP CONSTRAINT users_pkey;
Erwartete Ausgabe:
ALTER TABLE
In diesem Fall ist users_pkey der Name des Constraints, den du löschen willst. Den Namen des Constraints findest du mit dem Befehl \d im psql-Terminal zusammen mit dem Namen der Tabelle, deren Constraints du sehen möchtest, oder im Tab Indexes in Beekeeper Studio, der dir die Details der Tabelle inklusive der Namen der Constraints anzeigt.
Einen Fremdschlüssel-Constraint löschen
Fremdschlüssel sichern die referenzielle Integrität zwischen zwei Tabellen. So löschst du einen Fremdschlüssel-Constraint.
Beispiel:
Nehmen wir zwei Tabellen, orders und customers:
CREATE TABLE customers (
customer_id serial PRIMARY KEY,
customer_name VARCHAR (100) NOT NULL
);
CREATE TABLE orders (
order_id serial PRIMARY KEY,
order_date DATE NOT NULL,
customer_id INT,
CONSTRAINT fk_customer
FOREIGN KEY(customer_id)
REFERENCES customers(customer_id)
);
So löschst du den Fremdschlüssel-Constraint fk_customer:
ALTER TABLE orders
DROP CONSTRAINT fk_customer;
Erwartete Ausgabe:
ALTER TABLE
Mehr dazu findest du unter Einen Fremdschlüssel-Constraint löschen.
Einen Unique-Constraint löschen
Unique-Constraints stellen sicher, dass alle Werte in einer Spalte unterschiedlich sind. Einen Unique-Constraint löschst du genauso wie andere Constraints.
Beispiel:
Gegeben ist die Tabelle users:
CREATE TABLE users (
user_id serial PRIMARY KEY,
username VARCHAR (50) UNIQUE NOT NULL
);
So löschst du den Unique-Constraint auf der Spalte username:
ALTER TABLE users
DROP CONSTRAINT users_username_key;
Erwartete Ausgabe:
ALTER TABLE
Siehe Unique-Constraints in PostgreSQL erstellen
Einen Check-Constraint löschen
Check-Constraints sichern die Domänenintegrität, indem sie die Werte einschränken, die in eine Spalte eingetragen werden können.
Beispiel:
Angenommen, wir haben eine Tabelle products:
CREATE TABLE products (
product_id serial PRIMARY KEY,
price DECIMAL (10, 2) NOT NULL,
CONSTRAINT price_check CHECK (price > 0)
);
So löschst du den Check-Constraint price_check:
ALTER TABLE products
DROP CONSTRAINT price_check;
Erwartete Ausgabe:
ALTER TABLE
Die Daten bleiben unverändert
Wichtig zu wissen: Wenn du einen Constraint löschst, bleiben die Daten in der Tabelle unverändert. Der Constraint wird einfach entfernt, und du kannst Daten in der Tabelle einfügen oder ändern, ohne die bisherigen Constraints einhalten zu müssen.
Das Löschen von Constraints kann Integritätsprobleme verursachen
Sei beim Löschen von Constraints vorsichtig, denn das kann zu Problemen mit der Datenintegrität führen, wenn die Constraints aus gutem Grund existierten. Löschst du zum Beispiel einen Primärschlüssel-Constraint, können am Ende mehrere Zeilen mit denselben Werten in der Primärschlüsselspalte in der Tabelle stehen, was beim Abfragen oder Ändern der Daten Probleme verursachen kann.
Deshalb ist es immer sinnvoll, deine Daten und die bestehenden Constraints gründlich zu prüfen, bevor du Constraints in deiner Datenbank löschst. Bedenke außerdem die möglichen Auswirkungen auf Anwendungen oder Prozesse, die auf die Daten in der Tabelle angewiesen sind, bevor du den Constraint löschst.
Fazit
Um Constraints in PostgreSQL zu löschen, verwendest du den Befehl ALTER TABLE gefolgt von DROP CONSTRAINT. Jede Art von Constraint – Primärschlüssel, Fremdschlüssel, Unique und Check – lässt sich über ihren Namen löschen. Sei dabei vorsichtig, denn es kann zu Problemen mit der Datenintegrität führen, wenn der Constraint aus gutem Grund existierte. Wenn du weißt, wie du Constraints effektiv verwaltest, kannst du dein Datenbankschema über die Zeit pflegen und weiterentwickeln.
Beekeeper Studio ist eine kostenlose & Open-Source-PostgreSQL-GUI
Das ist der PostgreSQL-Client, nach dem ich gesucht habe! Die Oberfläche macht den Unterschied: aufgeräumt, intuitiv, leistungsstark. Tschüss, klobiges PGAdmin. - David Cyprian
Beekeeper Studio ist ein schneller, intuitiver und einfach zu bedienender PostgreSQL-Client. Er unterstützt auch jede Menge andere Datenbanken und läuft super unter Windows, Mac und Linux.
Was PostgreSQL-Nutzer über Beekeeper Studio sagen
Anders als pgAdmin ist Beekeeper bemerkenswert einfach zu bedienen, ohne dass Features fehlen – und der Preis stimmt! Die Backup-Funktion für Datenbanken ist besonders nützlich. Einfach großartige Software.
Fantastisches Tool, die praktischste IDE, die ich bisher für die Administration von Postgres- und MySql-Datenbanken gefunden habe – funktioniert einfach, ohne Theater :-)