Index und Primary Key

Tach und einen sonnigen Gruß,

ich möchte nur folgendes Wissen: mir hat ein Vögelchen gezwitschert, dass die Erstellung eines Unique Index gleichbedeutend mit einem Primary Key sein soll. Ist das wirklich an dem?

Und bitte: einfach ein knackiges Ja oder Nein. Kein Zerreden oder lustig machen. Danke

Gruß
CaptnUnterhose

Nein.

Andreas

Guten Morgen Andreas,

herzlichen Dank für die sehr schnelle und präzise Antwort.

Gruß
Michael

Um es etwas ausführlicher zu machen:

Ein Primary Key wird technisch durch einen Unique Index “abgesichert”. Wenn Du also einen PK anlegst wird automatisch ein Uniqe Index angelegt. Vielleicht meinte Dein “Vögelchen” das.

Das Gleiche gilt für einen Unique Constraint. Dieser wird auch durch einen Unique Index abgesichert.
Eine Tabelle kann genau einen Primary Key haben, aber beliebig viele Unique Constraints.

Der Unterschied zwischen einem Unique Constraint und einem Unique Index ist, dass der Unique Constraint Ziel eines Foreign Key Constraints sein kann, der Unique Index aber nicht.

Es gibt noch einen Unterschied:

test=# create table unterhose (id int primary key);
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "unterhose_pkey" for table "unterhose"
CREATE TABLE
test=*# insert into unterhose values (null);
ERROR:  null value in column "id" violates not-null constraint
DETAIL:  Failing row contains (null).
test=*# rollback;
ROLLBACK
test=# create table unterhose (id int unique);
NOTICE:  CREATE TABLE / UNIQUE will create implicit index "unterhose_id_key" for table "unterhose"
CREATE TABLE
test=*# insert into unterhose values (null);
INSERT 0 1

Andreas

Mahlzeit zusammen,

besten Dank für die Zusammenfassung.

Greetz