View Full Version : PRIMARY KEY erstellen mit ALTER TABLE
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
Was sagt denn die Hilfe zu dieser Fehlermeldung (auf die Fehlermeldung positionieren und "F1=Hilfe" drücken)?
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?
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.
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?
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.
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. ;)
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
@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
Wenn du einen CHGPF mit UNIQUE als Key versuchst, wird dieser auch abgelehnt.
Sag' das mal dem CHGPF, den ich hier vorhin gemacht habe. ;)