Seite 1 von 1

Wie Primärschlüssel neu schaffen?

Verfasst: Mo 4. Jul 2016, 19:01
von Pit Zyclade
Hallo,
Habe mir bei meinen kläglichen Versuchen, mit dem GUI den Charakter der Primärschlüsselspalte (small integer zu integer und schließlich zurück, weil ich auto increment haben wollte) zu ändern, nur erreicht, dass ich jetzt eine Tabelle habe, die gar keinen Primärschlüssel zu haben scheint, jedenfalls keinen in dem GUI. Auch kann ich keine Datenänderung in der Tabelle machen, aber die Datensätze scheinen vollständig zu sein, bis auf das fehlende ID-Feld.
Nun wollte ich per SQL wieder eine Spalte "ID" schaffen, die Primärschlüsseleigenschaft hat, weil ich dachte, daran könnte es liegen.
ABER das will mir nicht gelingen. Die SQL-Rückgabeantwort lautet:
1: Attempt to insert null into a non-nullable column: column: ID table: Tabelle 1 in statement [alter table "Tabelle 1" add column "ID" INT PRIMARY KEY before "Datum"]

Wie müßte die richtige SQL-Befehlskette lauten?
Ist der fehlende Primärschlüssel überhaupt Schuld, dass ich die Tabelle nicht mehr bearbeiten kann?

Danke für eure Mühe!

Re: Wie Primärschlüssel neu schaffen?

Verfasst: Mo 4. Jul 2016, 19:12
von RobertG
Hallo Pit,

Du kannst nicht anschließend ein Primärschlüsselfeld an eine bestehende Tabelle mit Inhalt anhängen. Das Feld darf ja nie NULL sein und muss in jedem Datensatz unterschiedliche Inhalte haben. Mit Dem von Dir genannten INSERT-Befehl erstellst Du aber ein leeres Feld.

Die einfachste Methode ist, eine neue Tabelle über die grafische Benutzeroberfläche zu erstellen, indem Du die alte Tabelle kopierst und als neue Tabelle einfügst. Dann wirst Du danach gefragt, ob ein Primärschlüssel erstellt werden soll. Das lässt Du zu und Du erhältst ein Integer-Feld, in der Regel als AutoWert.

Gruß

Robert

Re: Wie Primärschlüssel neu schaffen?

Verfasst: Mo 4. Jul 2016, 19:21
von Pit Zyclade
Danke, ja das hat geklappt und war sehr komfortabel. Schäme mich für meine Dummheit :roll:

Nur zur meiner Bildung: Wäre es möglich gewesen, in folgenden Schritten zum Erfolg zu kommen, 1. Spalte vor der ersten einzufügen, 2. Diese neue Spalte inkrementionell irgendwie aufzufüllen und 3. dann diese Spalte zum neuen Primärschlüssel zu erklären?

Danke für Antwort!

Re: Wie Primärschlüssel neu schaffen?

Verfasst: Di 5. Jul 2016, 15:29
von Freischreiber
Hallo,

also bei mir hat dieser SQL-Befehl für die Ausgangssituation (Tabelle ohne Primärschlüsselspalte) gerade funktioniert:

Code: Alles auswählen

ALTER TABLE "Tabelle1" ADD COLUMN "ID" INTEGER GENERATED BY DEFAULT AS IDENTITY
Es wurde eine neue Spalte ID erstellt, die gleich hochgezählte Werte enthält und so nie Null ist.

Gruß
Freischreiber