[NEWSboard IBMi Forum]
Seite 2 von 2 Erste 1 2

Hybrid View

  1. #1
    Registriert seit
    Aug 2001
    Beiträge
    2.934
    Such mal nach Identity Columns:https://www.ibm.com/docs/en/i/7.4?to...dentity-column
    Solange Du über die Identity Column einen Primary Key Constraint (oder einen Unique Key) legst, und dem System keinen Cycle erlaubst und den Zähler nicht manuell zurücksetzst, wird die Identity Column beim Insert (aber auch beim RPG write) automatisch (ohne Trigger) generiert.

    ... und Identity columns können mal eben so eingeführt werden! Der Aufwand ist nicht größer als wenn in einer Datei ein neues Feld eingefügt oder ein vorhandenes Feld geändert wird.
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  2. #2
    Registriert seit
    Mar 2002
    Beiträge
    5.379
    Zitat Zitat von B.Hauser Beitrag anzeigen
    ... und Identity columns können mal eben so eingeführt werden! Der Aufwand ist nicht größer als wenn in einer Datei ein neues Feld eingefügt oder ein vorhandenes Feld geändert wird.
    ... eigentlich ist er kleiner, wenn man das so einrichtet, dass am Ende der Aktion eine DDS-LF mit dem ursprünglichen Namen der PF, gleichen Feldern und gleicher Format-ID existiert.

    D*B

    PS: was macht ihr denn mit RPG RLA, was mit SQL nicht geht? Vielleicht macht ihr da ja was auf dem 2.-besten Weg!
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  3. #3
    Registriert seit
    Nov 2009
    Beiträge
    227
    Danke für diese Information!

    So wie sich das liest muß die Datei aber SQL beschrieben sein.
    oder geht ein

    Alter Table add colum
    ORDERNO SMALLINT NOT NULL

    GENERATED ALWAYS AS IDENTITY

    (START WITH 500

    INCREMENT BY 1

    CYCLE)


    Wenn ich alles auf SQL basiere Dateien umstelle, bekomme ich das Satzformat Problem
    (obwohl ... ich glaube das kann SQL auch mitlerweile!?)

    Und was bedeutet ... dem System keinen Cycle erlaubst ...

    Vielen Dank
    Dietlinde Beck

  4. #4
    Registriert seit
    Mar 2002
    Beiträge
    5.379
    ... man kann problemlos eine DDS LF auf eine SQL erstellte PF stellen, die dasselbe Format, wie die ersprüngliche PF hat.
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.752
    Was willst du mit einer Identity von max. 32767 Werten;-)?
    Eine Identity dient i.d.R. auch als Primary Key und sollte daher mindestens Integer sein.

    Mit Table Functions habe ich bisher keine schlechten Erfahrungen gemacht.
    Die IBM baut ja selber dauernd neue für die ganzen Vewaltungs-API's (Service-Views).

    Table-Functions und Procedures dienen ja nur zur Verbergung von direkten SQL-Zugriffen und stellen zumindest nach meiner Erfahrung kein Problem dar.

    Was das Create Table angeht, so kann man natürlich einen Satzformatnamen angeben, in RPG/LE kann man den aber auch umbenennen.

    Aber wie immer in der IBM i-Welt: es gibt 100te Meinungen und 1000de Lösungen;-).
    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

  6. #6
    Registriert seit
    Nov 2009
    Beiträge
    227
    Habe das gerade mal ein wenig probiert,
    mit "alter Table" geht das auf DDS beschriebene PF, das ist gut.
    Gelöschte Sätze werden mitgezählt, das ist schlecht.
    ein RGZPFM nummeriert neu durch, das wäre eine Katastrophe, dann wären ja alle abh. Dateien falsch!
    kann man das einstellen?

  7. #7
    Registriert seit
    Aug 2001
    Beiträge
    2.934
    Zitat Zitat von dibe Beitrag anzeigen
    Habe das gerade mal ein wenig probiert,
    mit "alter Table" geht das auf DDS beschriebene PF, das ist gut.
    Gelöschte Sätze werden mitgezählt, das ist schlecht.
    ein RGZPFM nummeriert neu durch, das wäre eine Katastrophe, dann wären ja alle abh. Dateien falsch!
    kann man das einstellen?
    Lass das! Spätestens bei der nächsten DDS-Änderung hast Du die Identity vergessen!

    Konvertiere die Tabelle nach DDL und füge dann die Spalte hinzu.
    Erstelle das SQL Skript über Reverse Engineering (ACS Wizard - Generate SQL oder SQL Stored Procedure GENERATE_SQL), achte darauf, dass CREATE OR REPLACE TABLE angegeben ist.
    Führe das SQL Skript aus ... und schon ist die Tabelle konvertiert! Wenn Du nur konvertierst und keine neuen Spalten einfügst brauchst Du noch nicht einmal die RPG-Programme mit Native I/O zu kompilieren.

    Aber Achtung: Vor der Konvertierung musst Du sicherstellen, dass Deine physische Datei keine ungültigen numerischen Daten (z.B. *Blanks) enthält, ansonsten gehen Dir Daten verloren.
    In der Bibliothek SYSTOOLS gibt es die Funktionen VALIDATE_DATA, VALIDATE_DATA_FILE und VALIDATE_DATA_LIBRARY mit denen Du auf ungültige numerische Werte prüfen kannst. Diese müssen zunächst korrigiert werden.

    Alle Daten und abh. Objekte bleiben erhalten und müssen nicht neu erstellt werden.
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  8. #8
    Registriert seit
    Nov 2020
    Beiträge
    421
    Ein RGZPFM ändert nicht die Nummer bei einer Identiy Spalte.
    ei Commit-Steuerung, wenn neu erstellte Sätze doch wieder mit Rollback entfernt werden, entstehen ebenfalls Lücken im Nummernkreis.
    Das ist aber völlig egal und hat auch niemandem zu interessieren, da die Nummern nicht für eine hübsche Lesbarkeit sondern für Eindeutigkeit und Integrität bei Fremdschlüsseln dienen.

    Ich verwende (meistens) sowieso nur noch BIGINT für die ID.
    Teilweise haben wir hier noch ein Denkschema von 1980 wo jedes Byte gezählt hat.
    Heute erzeugen wir durch dieses Denkschema nur langfristige Probleme, denn von der Performance merkst du da bei den Maschienen keinen Unterschied mehr.

Similar Threads

  1. SQL index auf view
    By dibe in forum IBM i Hauptforum
    Antworten: 14
    Letzter Beitrag: 01-07-18, 17:27
  2. SQL View mit Index/Key
    By malzusrex in forum NEWSboard Programmierung
    Antworten: 9
    Letzter Beitrag: 19-10-16, 19:53
  3. Antworten: 4
    Letzter Beitrag: 19-07-16, 12:44
  4. LF / SQL index
    By woodstock99 in forum NEWSboard Programmierung
    Antworten: 31
    Letzter Beitrag: 18-03-15, 14:29
  5. Cobol View und Index (V5R4)
    By KingofKning in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 29-12-14, 13:01

Berechtigungen

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