Drop-Not-Null-Constraint in PostgreSQL

Bilal Shahid 20 Juni 2023
  1. Bedeutung der Verwendung der Bedingung NOT NULL
  2. Wenden Sie die Bedingung Not Null in PostgreSQL an
  3. Löschen Sie die Bedingung Not Null in PostgreSQL
Drop-Not-Null-Constraint in PostgreSQL

Die Bedingung NOT NULL ist ein ziemlich hilfreiches Werkzeug in PostgreSQL. Es könnte jedoch etwas schwierig zu bedienen sein. In diesem Artikel wird erläutert, wie Sie es anwenden und löschen können, um die gewünschten Ergebnisse in Ihrer Datenbank zu erzielen.

Bedeutung der Verwendung der Bedingung NOT NULL

Die Einschränkung kann als voreingestellte Regeln definiert werden, die auf eine Spalte in einer Tabelle angewendet werden, damit die darin eingegebenen Daten den Anforderungen entsprechen.

Es verhindert ungültige Dateneingaben, was in der Regel ein großes Problem darstellt, insbesondere wenn Sie viele Daten in einer umfangreichen Datenbank mit mehreren Beziehungen haben. Sie können so viele Einschränkungen anwenden, wie Sie möchten, oder gar keine.

Die Einschränkung NOT NULL ist eine besondere Einschränkung, die wir jeder Spalte in einer Tabelle hinzufügen können. Wie der Name schon sagt, verhindern Sie, dass der Eintrag in jeder Zeile dieser Spalte NULL ist.

Dies ist besonders wichtig, wenn es um PRIMARY-Schlüssel geht, die niemals NULL sein können. Auch beim Aufbau von Beziehungen ist es notwendig, da diese bei NULL-Werten nicht oder oft falsch erstellt werden können.

Sie verhindern auch, dass ein Benutzer versehentlich einen Eintrag überspringt. Fangen wir also an zu lernen, wie wir in PostgreSQL eine NOT NULL-Einschränkung anwenden können.

Wenden Sie die Bedingung Not Null in PostgreSQL an

Die Anwendung der Bedingung NOT NULL ist nicht so schwierig, wie es scheinen mag. In den meisten Fällen ist es nur eine zusätzliche Codezeile. Je nach Situation können Sie eine der folgenden Methoden verwenden.

Fügen Sie beim Erstellen einer Tabelle die Einschränkung NOT NULL hinzu

Der beste Zeitpunkt, um die Einschränkung NOT NULL zu einer Spalte hinzuzufügen, ist während der Erstellung. Das liegt daran, dass es nur darum geht, NOT NULL wie folgt daneben hinzuzufügen:

CREATE TABLE name(
    column_1 int PRIMARY KEY,
    column_2 VARCHAR (100),
    column_3 VARCHAR (300) NOT NULL
);

Hier wird die Bedingung NOT NULL zu column_3 hinzugefügt.

Fügen Sie einer bestehenden Tabelle die Bedingung NOT NULL hinzu

Eines der vielen Dinge, die die Verwendung von PostgreSQL so einfach machen, ist, dass Sie jederzeit zusätzliche Einschränkungen hinzufügen können, selbst wenn die Tabelle bereits erstellt wurde. Sie können dies mit dem folgenden Code ausprobieren.

Erstellen Sie zunächst eine Tabelle:

CREATE TABLE users(
    user_id int PRIMARY KEY,
    user_name VARCHAR (100) UNIQUE,
    e-mail VARCHAR (300)
);

Es wird eine Tabelle erstellt; Wenn Sie jedoch feststellen, dass Sie vergessen haben, eine Bedingung NOT NULL hinzuzufügen, können Sie dies auf zwei Arten tun. Der erste erfordert etwas mehr Arbeit. Sie löschen zuerst die vorhandene Tabelle und erstellen eine neue, wie unten gezeigt:

DROP TABLE users;

Erstellen Sie danach die Tabelle erneut mit der Nicht-Null-Einschränkung, wie unten gezeigt:

CREATE TABLE users(
    user_id int PRIMARY KEY,
    user_name VARCHAR (100) UNIQUE,
    e-mail VARCHAR (300) NOT NULL
);

Diese Methode funktioniert, ist aber etwas zeitaufwändig. Eine viel einfachere Alternative ist die Verwendung des Befehls ALTER TABLE wie unten gezeigt:

ALTER TABLE users 
ALTER COLUMN e-mail set not null;

Auf diese Weise wird die Einschränkung NOT NULL in der Spalte e-mail hinzugefügt. Außerdem müssen Sie Ihre Tabelle dafür nicht löschen.

Löschen Sie die Bedingung Not Null in PostgreSQL

Beim Bearbeiten Ihrer Datenbank stellen Sie möglicherweise fest, dass die Bedingung NOT NULL nicht benötigt oder falsch platziert wurde. In Zeiten wie diesen ist es notwendig zu wissen, wie man die Einschränkung NOT NULL entfernt oder aufhebt. Hier sind einige der Möglichkeiten:

Lassen Sie die Bedingung NOT NULL in einzelnen Spalten fallen

Wenn Sie die Einschränkung in einzelnen Spalten löschen möchten, können Sie dies ganz einfach mit demselben ALTER TABLE-Befehl tun, aber mit einem kleinen Unterschied, da Sie die Einschränkung jetzt entfernen. Sie können dies mit dem folgenden Code erreichen:

ALTER TABLE users
ALTER COLUMN e-mail drop not null;

Sie können die Postgres-Einschränkung NOT NULL in der Spalte e-mail schnell löschen. Dies ist eine bessere Alternative, als die gesamte Tabelle zu löschen und erneut zu erstellen, ohne den gewünschten Spalten die Einschränkung NOT NULL hinzuzufügen.

Lassen Sie die Bedingung NOT NULL in mehreren Spalten fallen

Sie können den obigen Code mehrmals verwenden, wenn Sie die Einschränkung in verschiedenen Spalten löschen möchten.

ALTER TABLE users
ALTER COLUMN e-mail drop not null;

ALTER TABLE users
ALTER COLUMN new_column drop not null;

Dies kann jedoch etwas zeitaufwändig sein. Glücklicherweise bietet PostgreSQL eine Alternative, mit der wir NOT NULL wie folgt löschen können.

ALTER TABLE users
ALTER COLUMN e-mail drop not null,
ALTER COLUMN new_column drop not null;

Auf diese Weise können Sie die Einschränkung NOT NULL in mehreren Spalten auf einmal löschen.

Lassen Sie alle Not Null-Constraints in PostgreSQL fallen

Die obige Methode kann hilfreich sein, wenn Sie nicht viele Spalten haben, die geändert werden müssen. Wenn Sie jedoch alle NOT NULL-Einschränkungen aus einer Tabelle mit vielen Spalten löschen möchten, kann es schwierig sein, alle benötigten Spalten zu identifizieren.

Zu diesem Zweck können Sie den folgenden Code verwenden:

SELECT x.attname
FROM pg_catalog.pg_attribute x
WHERE attrelid = 'table_name'::regclass
AND x.attnum > 0
AND NOT x.attisdropped
AND x.attnotnull;

Es filtert alle Spalten mit einer NOT NULL-Einschränkung heraus. Dies schließt jedoch auch PRIMARY-Schlüssel ein, die Sie je nach Ihren Anforderungen möglicherweise ausschließen möchten.

Verwenden Sie danach den obigen Code, um Einschränkungen für alle erforderlichen Spalten zu löschen. Das ist eine einfache Methode, die PostgreSQL anbietet, um die NOT NULL-Einschränkungen zu Spalten in einer Tabelle hinzuzufügen und zu löschen.

Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub