[NEWSboard IBMi Forum]
Seite 2 von 3 Erste 1 2 3 Letzte
  1. #13
    Registriert seit
    Aug 2001
    Beiträge
    2.873
    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 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  2. #14
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    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. #15
    Registriert seit
    Nov 2009
    Beiträge
    208
    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. #16
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    ... 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. #17
    Registriert seit
    Feb 2001
    Beiträge
    20.236
    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. #18
    Registriert seit
    Nov 2009
    Beiträge
    208
    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. #19
    Registriert seit
    Aug 2001
    Beiträge
    2.873
    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 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  8. #20
    Registriert seit
    Nov 2020
    Beiträge
    327
    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.

  9. #21
    Registriert seit
    Nov 2009
    Beiträge
    208
    Vielen Dank!

    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.
    Sie meinen sicher erst das Reverse Engineering, dann das hinzufügen in die Source / das Script?
    ACS habe ich. (zum Glück auf deutsch)
    Wie komme ich in den Wizzard?

    Dann muß ich einen unique Key auf die Datei legen, Key = die neue Spalte?
    Und trotz Aktualitätsprüfung brauche ich nicht Wandeln?

    Das mit dem RGZ probiere ich nochmal, m.e. war das eben so, warsch. heute abend.

    DiBe

  10. #22
    Registriert seit
    Nov 2020
    Beiträge
    327
    Zitat Zitat von dibe Beitrag anzeigen
    Das mit dem RGZ probiere ich nochmal, m.e. war das eben so, warsch. heute abend.
    Sollte das der Fall sein, so wäre das der IBM als Bug zu melden.
    Ein Reorg darf niemals den Inhalt von Datensätzen verändern.

    Im ACS gehst du über das Menü "SCHEMA", dort Rechts-Klick auf Schema --> Inkludierst die Lib --> gehst in den Bereich "Tabellen" Rechts-Klick auf die gewünschte Tabelle --> SQL Generieren.
    Es gibt auch eine SQL prozedur dafür
    https://www.ibm.com/docs/en/i/7.4?to...-sql-procedure

    Die Programme müssen umgewandelt werden.

  11. #23
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    ... die Programme müssen nicht gewandelt werden, wenn man der PF einen anderen Namen verpasst und unter dem alten Namen eine DDS LF mit den Feldern der alten PF und den alten Keyfeldern anlegt. Der neue Kunstkey ist dann zusätzlich, die Applikation benutzt den alten Key, die Historie den neuen generierten Key.
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  12. #24
    Registriert seit
    Nov 2009
    Beiträge
    208
    Ein Menü Schema habe ich nicht.
    Ist es doch das falsche Pgm?Click image for larger version. 

Name:	ACS.JPG 
Views:	10 
Size:	109,6 KB 
ID:	629

Similar Threads

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

Berechtigungen

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