Primärschlüssel nur dann zu einer PostgreSQL-Tabelle hinzufügen, wenn er nicht vorhanden ist

Shihab Sikder 20 Juni 2023
  1. Weisen Sie einen Primärschlüssel in einer vorhandenen Tabelle in PostgreSQL zu
  2. Primärschlüssel zu einer PostgreSQL-Tabelle hinzufügen, wenn er nicht vorhanden ist
Primärschlüssel nur dann zu einer PostgreSQL-Tabelle hinzufügen, wenn er nicht vorhanden ist

Manchmal können wir eine Tabelle erstellen, ohne den Primärschlüssel zu deklarieren, der zum Erstellen einer Beziehung mit anderen Tabellen erforderlich ist. Jetzt können wir die Tabelle mit der Abfrage alter aktualisieren und den Primärschlüssel aktualisieren.

Weisen Sie einen Primärschlüssel in einer vorhandenen Tabelle in PostgreSQL zu

Der Primärschlüssel ist beim Erstellen einer Beziehung erforderlich. Es können mehrere Beziehungen zu einer Tabelle bestehen, aber ohne Primärschlüssel können wir keine Beziehung herstellen.

Angenommen, wir haben eine Tabelle wie die folgende erstellt:

CREATE TABLE Product(
  PRODUCT_ID INT,
  PRODUCT_NAME VARCHAR,
  PRODUCT_PRICE NUMERIC,
  PRODUCT_DESCRIPTION VARCHAR
);

Wenn wir nun die Tabellenkonfiguration und die Datentypen sehen möchten, sieht dies wie folgt aus:

postgres=# \d Product
                          Table "public.product"
       Column        |       Type        | Collation | Nullable | Default
---------------------+-------------------+-----------+----------+---------
 product_id          | integer           |           |          |
 product_name        | character varying |           |          |
 product_price       | numeric           |           |          |
 product_description | character varying |           |          |

Lassen Sie uns nun den Primärschlüssel hinzufügen. Hier vergeben wir die product_id als Primärschlüssel.

So werden wir es machen:

postgres=# ALTER TABLE Product ADD PRIMARY KEY (PRODUCT_ID);
ALTER TABLE
postgres=# \d Product\
                          Table "public.product"
       Column        |       Type        | Collation | Nullable | Default
---------------------+-------------------+-----------+----------+---------
 product_id          | integer           |           | not null |
 product_name        | character varying |           |          |
 product_price       | numeric           |           |          |
 product_description | character varying |           |          |
Indexes:
    "product_pkey" PRIMARY KEY, btree (product_id)

postgres=#

Hier sehen Sie, dass product_id als Primärschlüssel zugewiesen ist und nicht null sein darf.

Primärschlüssel zu einer PostgreSQL-Tabelle hinzufügen, wenn er nicht vorhanden ist

Die obige Methode fügt den Primärschlüssel hinzu, selbst wenn der Primärschlüssel vorhanden ist. Jetzt werden wir den Primärschlüssel überprüfen und hinzufügen, falls er nicht vorhanden ist.

Hier ist etwas zu beachten. Postgres weist automatisch eine Einschränkung wie product_pkey zu, wenn wir einen Primärschlüssel hinzufügen, also müssen wir prüfen, ob diese Einschränkung existiert oder nicht.

Hier sind die Schritte:

  1. Löschen Sie den Primärschlüssel, falls vorhanden.
  2. Fügen Sie den Primärschlüssel hinzu.
ALTER TABLE product DROP CONSTRAINT IF EXISTS product_pkey;
ALTER TABLE product ADD CONSTRAINT product_pkey PRIMARY KEY (PRODUCT_ID);

Hier ist die Ausgabe der psql-Shell:

postgres=# ALTER TABLE product DROP CONSTRAINT IF EXISTS product_pkey;
NOTICE:  constraint "product_pkey" of relation "product" does not exist, skipping
ALTER TABLE
postgres=# ALTER TABLE product ADD CONSTRAINT product_pkey PRIMARY KEY (PRODUCT_ID);
ALTER TABLE
postgres=# \d Product
                          Table "public.product"
       Column        |       Type        | Collation | Nullable | Default
---------------------+-------------------+-----------+----------+---------
 product_id          | integer           |           | not null |
 product_name        | character varying |           |          |
 product_price       | numeric           |           |          |
 product_description | character varying |           |          |
Indexes:
    "product_pkey" PRIMARY KEY, btree (product_id)

Um mehr über den Primärschlüssel und das Ändern einer Tabelle in Postgres zu erfahren, besuchen Sie den folgenden Blog.

Shihab Sikder avatar Shihab Sikder avatar

I'm Shihab Sikder, a professional Backend Developer with experience in problem-solving and content writing. Building secure, scalable, and reliable backend architecture is my motive. I'm working with two companies as a part-time backend engineer.

LinkedIn Website

Verwandter Artikel - PostgreSQL Key

Verwandter Artikel - PostgreSQL Table