[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Aug 2003
    Beiträge
    1.508

    Fehler bei Verwendung von UNIQUE in Tabelle

    Hallo,

    ich bin auf ein Problem gestoßen welches ich nicht ganz verstehe.

    (Alles läuft derzeit ohne Commit und ohne Journal.)

    Ich habe eine Tabelle SRC.
    Die laufende Nummer ist der Primärschlüssel.
    ObjektNr., SourceFile und SourceLib bilden einen Unique-Key.

    Sätze kann ich hinzufügen, wenn es jedoch ums Löschen geht, bekommen ich IMMER eine Fehlermeldung (auch wenn die tabelle neu erstellt und leer ist).

    Entferne ich den Unique-Key funktioniert alles super.

    Code:
     CREATE TABLE SRC
       (SRCNR     INTEGER GENERATED BY DEFAULT AS IDENTITY,
        OBJNR     INTEGER      /* Objekt Zuordnung             */
                  NOT NULL WITH DEFAULT,
        SRCF      CHAR (10)    /* Source-File (QRPGSRC, ...)   */
                  NOT NULL WITH DEFAULT,
        SRCLIB    INTEGER      /* Zuordnung der Source-Lib     */
                  NOT NULL WITH DEFAULT,
        SRCMBR    CHAR (10)    /* Source-File (QRPGSRC, ...)   */
                  NOT NULL WITH DEFAULT,
        SRCTYP    CHAR (10)    /* Source-Typ (RPGLE, CLLE, ...)*/
                  NOT NULL WITH DEFAULT,
        SRCDAT    DATE         /* AEnderungs-Datum vom Source  */
                  NOT NULL WITH DEFAULT,
        CONSTRAINT SRC_PK
             PRIMARY KEY (SRCNR));
    Hier werden die Fremdschlüssel und der Unique-Key erstellt.

    Code:
     ALTER TABLE SRC
      ADD CONSTRAINT SRCOBJ_FK
          FOREIGN KEY (OBJNR)
      REFERENCES OBJ (OBJNR)
      ON DELETE CASCADE
      ON UPDATE RESTRICT;
    
     ALTER TABLE SRC
      ADD CONSTRAINT SRCLIB_FK
          FOREIGN KEY (SRCLIB)
      REFERENCES LIB (LIBNR)
      ON DELETE CASCADE
      ON UPDATE RESTRICT;
    
     ALTER TABLE SRC
    	ADD CONSTRAINT SRC_UNIQUE
    	UNIQUE (OBJNR, SRCF, SRCLIB);
    Hier die Fehlermeldung:

    Code:
    strsql                                          
    Teildatei SRC nicht in Journal *N aufgezeichnet.
    SRC in MYLIB für Operation ungültig.
    Code:
    Nachricht . . . :   SRC in MYLIB für Operation ungültig.                
    Ursache  . . . . :  Ursachencode ist 3. Ursachencodes:                      
        1 - SRC hat keine Teildateien.                                          
        2 - SRC wurde mit freiem Speicherplatz gesichert.                       
        3 - SRC nicht im Journal aufgezeichnet, keine Berechtigung für Journal  
      oder der Journalstatus ist *STANDBY. Dateien mit                          
      RI-Integritätsbedingungsaktion CASCADE, SET NULL od. SET DEFAULT müssen im
      selben Journal aufgezeichnet werden.
    Ist bei der Verwendung eines Unique-Keys ein Journal Pflicht?

    Danke für jeden Denkanstoß.
    lg

  2. #2
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Ich glaube das Problem gefunden zu haben.
    Scheinbar benötige ich für eine Relationale Datenbank auf jeden Fall ein Journal.
    Mit Journal habe ich keine Probleme mehr.
    Vielleicht verwendet die Datenbank innerhalb der SQL-APIs Commitment-Control? Zumindest sieht es so aus.

  3. #3
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    Zitat Zitat von andreaspr@aon.at Beitrag anzeigen

    ON DELETE CASCADE

    3 - SRC nicht im Journal aufgezeichnet, keine Berechtigung für Journal
    oder der Journalstatus ist *STANDBY. Dateien mit
    RI-Integritätsbedingungsaktion CASCADE, SET NULL od. SET DEFAULT müssen im
    selben Journal aufgezeichnet werden.lg
    ohne Kommentar
    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Nun ja, die Fehlermeldung müsste dahingehend ergänzt werden:

    Bei Integritätsbedingungen muss überhaupt ein Journal angelegt werden.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  5. #5
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    ... das stimmt so nicht, die Fehlermeldung ist klar und eindeutig, referential Constraint mit Cascade erfordert Journalisierung (mit restrict oder no action keineswegs), was einleuchtend ist.

    D*B

    Zitat Zitat von Fuerchau Beitrag anzeigen
    Nun ja, die Fehlermeldung müsste dahingehend ergänzt werden:

    Bei Integritätsbedingungen muss überhaupt ein Journal angelegt werden.
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  6. #6
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Zitat Zitat von BenderD Beitrag anzeigen
    ... das stimmt so nicht, die Fehlermeldung ist klar und eindeutig, referential Constraint mit Cascade erfordert Journalisierung (mit restrict oder no action keineswegs), was einleuchtend ist.
    ... das stimmt so auch nicht, ich hatte alle 3 Varianten probiert, CASCADE, RESTRICT und NO ACTION.
    Bei beiden der gleiche Fehler.

    Ich vermute dass der Grund warum es beim Entfernen des Unique-Keys funktionierte, war weil der iSeries Nav auch den Fremdschlüssel der Tabelle SRCMBR entfernte dessen Feld auf diesen Unique-Key verbunden war.

    Somit schaut es für mich so aus als ob ein Journal grundsätzlich notwendig ist (zumindest sobald ich Datensätze löschen möchte).

  7. #7
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    ... ein Blick in die Doku ist manchmal hilfreich! Die Lage ist eindeutig und alles andere unvollständig beobachtet oder ein Defekt Problem.
    D*B

    Zitat Zitat von andreaspr@aon.at Beitrag anzeigen
    ... das stimmt so auch nicht, ich hatte alle 3 Varianten probiert, CASCADE, RESTRICT und NO ACTION.
    Bei beiden der gleiche Fehler.

    Ich vermute dass der Grund warum es beim Entfernen des Unique-Keys funktionierte, war weil der iSeries Nav auch den Fremdschlüssel der Tabelle SRCMBR entfernte dessen Feld auf diesen Unique-Key verbunden war.

    Somit schaut es für mich so aus als ob ein Journal grundsätzlich notwendig ist (zumindest sobald ich Datensätze löschen möchte).
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Da muss ich Dieter zustimmen.
    "Nicht im selben Journal" ist auch korrekt, wenn kein Journal angegeben ist.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  9. #9
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Zitat Zitat von Fuerchau Beitrag anzeigen
    "Nicht im selben Journal" ist auch korrekt, wenn kein Journal angegeben ist.
    Verstehe gerade nicht was du damit meinst.

    Ich habe am nächsten Tag das ganze noch mal mit ON DELETE NO ACTION getestet und plötzlich siehe da, geht es auch ohne Journal.
    Was mich allerdings seeeeeehr gewundert hat, dass es beim ersten mal nicht funktionierte. Trotz commit=*none und ab und neu anmelden. Speziel weil ja auch NO ACTION der Default war.

    Ich habe dann in einem Redbook meine Vermutung bestätigt bekommen, dass bei Contraints (außer bei RESTRICT und NO ACTION), das System in manchen Situationen automatisch Commitment Control verwendet, falls dies vom Programm selbst nicht eingeschaltet ist.

    Ich verstehe nur nicht warum es mit NO ACTION nicht von Anfang an funktionierte.
    Hat sich nun mit dem SQL SCHEMA erledigt.
    Und dazugelernt hab ich auch wieder was

  10. #10
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    Zitat Zitat von andreaspr@aon.at Beitrag anzeigen
    Ich habe am nächsten Tag das ganze noch mal mit ON DELETE NO ACTION getestet und plötzlich siehe da, geht es auch ohne Journal.
    ... da gibt es nur zwei Möglichkeiten:
    - das Problem sitzt meistens vor dem Bildschirm
    oder
    - ihr habt eine der ganz seltenen Maschinen erwischt, wo das nur jeden zweiten Tag funktioniert, dann muss man sich am besten aufschreiben, ob das an geraden oder ungeraden Tagen funzt

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

Similar Threads

  1. Os400 Fehler ?
    By Robi in forum IBM i Hauptforum
    Antworten: 10
    Letzter Beitrag: 04-11-06, 16:02
  2. Records innerhalb Tabelle duplizieren
    By mama in forum IBM i Hauptforum
    Antworten: 12
    Letzter Beitrag: 27-10-06, 08:14
  3. Triggersyntax erzeugt nur Fehler
    By deni87991 in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 24-08-06, 10:05
  4. Finde Fehler bei SQL nich...
    By deni87991 in forum IBM i Hauptforum
    Antworten: 11
    Letzter Beitrag: 08-08-06, 13:50
  5. Fehler im SQL bzw. Joblog
    By GraueEminenz in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 10-07-06, 11:58

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •