PDA

View Full Version : PRIMARY KEY erstellen mit ALTER TABLE



Seiten : [1] 2

ZeusNBG
20-05-08, 09:10
Hallo zusammen,

ich habe das Problem, dass ich per interaktivem SQL einer Tabelle nachträglich einen Schlüssel hinzufügen möchte.

ALTER TABLE Q3 ADD PRIMARY KEY (schluessel)

Da bekomme ich aber immer die Fehlermeldung:

Q3 in lib für Operation ungültig

Hat evtl. jemand einen Tipp für mich?

Vielen Dank

Pikachu
20-05-08, 09:24
Was sagt denn die Hilfe zu dieser Fehlermeldung (auf die Fehlermeldung positionieren und "F1=Hilfe" drücken)?

ZeusNBG
20-05-08, 09:31
Hier die Fehlermeldung:


10 - Integritätsbed./Auslöser wird zu ungültiger Tabelle hinzugefügt.
Tabelle ist in QTEMP, hat unterschiedliche ASPs, ist keine extern
beschriebene Datei oder kann nicht überschrieben/aktualisiert/gelöscht
werden. Für eine Integritätsbed. ist Tabelle eine Quellendatei oder
Elterndatei hat andere Teildatei. Max. Anzahl Auslöser in einem Auslöser
erreicht. In QTEMP ist sie nicht.
Unterschiedliche ASPs: Was ist das?
Keine extern beschriebene Datei: Kommt hin, wurde per SQL erstellt!

OK, da liegt das Problem. Welche Möglichkeit bleibt mir aber in dem Fall?

Fuerchau
20-05-08, 09:35
Schau mal per DSPFD nach, ob nicht bereits ein Schlüssel definiert ist, oder bereits Daten vorhanden sind, die einen eindeutigen Schlüssel verbieten.

Primary Key ist immer UNIQUE !!!

Wenn du nur einen Schlüssel/Index für schnelleren Zugriff benötigst, dann mach einfach einen CREATE INDEX.

ZeusNBG
20-05-08, 09:44
Die Tabelle ist leer und hat noch keinen Key.

Das mit dem Index hilft mir leider in dem Fall denke ic auch nicht weiter, da den Schlüssel für ein folgendes RPG-Programm brauche. Oder kann ich den in RPG irgendwie verwenden? Wohl ehr nicht, oder?

ZeusNBG
20-05-08, 09:46
Wenn es blöd läuft baue ich die Tabelle einfach per DDS nach und die Sache ist erledigt...

Ist in diesem Fall auch nicht so dringend, hätte ich aber schon des öfteren gebraucht.

Pikachu
20-05-08, 10:46
Schau mal per DSPFD nach, ob nicht bereits ein Schlüssel definiert ist, oder bereits Daten vorhanden sind, die einen eindeutigen Schlüssel verbieten.
Mit ALTER TABLE ... ADD PRIMARY KEY ... geht das tatsächlich nicht, aber ein CHGPF stört sich nicht an doppelten Sätzen. ;)

BenderD
20-05-08, 10:47
bist du dessen sicher? vielleicht gibt es das Teil ja mehrfach?
wie sieht das Erstellungsskript aus und was passiert, wenn du die Primary Key Constraint gleich mit erstellst?

D*B



In QTEMP ist sie nicht

Fuerchau
20-05-08, 11:29
@Pikachu
Wenn du einen CHGPF mit UNIQUE als Key versuchst, wird dieser auch abgelehnt.
Primary Key ist automatisch UNIQUE.

Ansonsten:
Alter Table geht auch nicht, wenn die Tabelle in Verwendung ist.
Prüfe ggf. mit WRKOBJLCK mal nach.

Ein Alter Table führt intern immer zu einem Create/Insert-Select/Drop/Rename, was nur im Exclusiv-Zugriff funktioniert.

Pikachu
20-05-08, 11:35
@Pikachu
Wenn du einen CHGPF mit UNIQUE als Key versuchst, wird dieser auch abgelehnt.
Sag' das mal dem CHGPF, den ich hier vorhin gemacht habe. ;)