[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Apr 2005
    Beiträge
    104
    'kein column id Satz verfügbar'
    Anscheinend ist das nur grausig übersetzt. Oder ?

    Wenn eine eindeutige RowId gemeint ist, ok, dann erstellt man mit SQL eben so ein Zusatzfeld, und definiert in den Contraints, daß es automatisch gefüllt und hochgezählt wird. Beim INSERT läßt man dieses Feld einfach weg, denn die Datenbank erzeugt es wirklich selber.

    Beim Lesen und Updaten ist es doch ganz vorteilhaft, die Rows damit leicht unterscheiden zu können. Daß das Feld selber aber auch nicht upgedatet werden kann, ist wohl logo.

    Leider kenne ich kaum klassische AS400-Anwendungen, die so was benutzen. Um die Java-Programmierer aber glücklich zu machen, habe ich bei meinen Tabellen oft so ein Feld hinten angefügt, und es ansonsten komplett ignoriert.

  2. #2
    Registriert seit
    Feb 2004
    Beiträge
    16

    gelöst....

    Vielen Dank für die Antworten. Es handelt sich hier um eine zusätzliche Identitätsspalte, die von der AS400 selbst gefüllt wird - praktisch einen tabelleninternen Schlüssel.
    Jedes numerische Feld kann man als diesen Schlüssel definieren der dann auch bei write Operationen ohne SQL korrekt weitergezählt wird.
    Das Feld CID als solche column ID wird z.B. so erstellt :

    CID NUMERIC(15, 0) GENERATED ALWAYS AS IDENTITY
    (START WITH 1 INCREMENT BY 1
    NO MINVALUE NO MAXVALUE
    CYCLE NO ORDER
    CACHE 20 )
    Leider kann man an mit DDS definierten Tabellen solche Spalten nicht hinzufügen, es gibt auch kein DDS Schlüsselwort dafür.

  3. #3
    Registriert seit
    Apr 2005
    Beiträge
    104
    Ja, genau das meinte ich auch.

    Es ist übrigens gar nicht schwer, mit DDS definierte Datenbankdateien im interaktiven SQL zu selektieren, und mit F13 eine SQL-Ausgabedatei zu erstellen, die dann nicht mehr die DDS-Merkmale trägt. Bei dieser Kopie kann man dann in einem zweiten Schritt leicht die Identity-Colum mit ALTER TABLE hinzufügen, denke ich.

  4. #4
    Registriert seit
    Aug 2001
    Beiträge
    2.943
    Mit dem SQL-Befehl Alter Table kann man auch DDS-beschriebene physische Dateien verändern und SQL Informationen integrieren (z.B. Identity columns).

    Für ein erneutes Erstellen sollte man sich dann den SQL-Code über den iSeries Navigator (auf die Tabelle positionieren, Rechtsclick und SQL generieren auswählen) und am besten in ein Source Member sichern. Mit RUNSQLSTM könnte dann die Datei (basierend auf dem SQL-Befehl) erneut erstellt werden.

    Birgitta
    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

  5. #5
    Registriert seit
    Feb 2004
    Beiträge
    16

    ja und nein

    Wenn die Datei mit DDS erstellt wurde, kann ich mit alter table keine column id einfügen.
    Wenn ich die Datei mit SQL neu erstelle, kann ich mit alter table einfügen, was ich will.

Similar Threads

  1. MS Access ODBC mit JOIN: SQL FEHLER666
    By olafu in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 05-10-06, 09:13
  2. iSeries Access ODBC Driver und MS SQL Server ...
    By rcauchy in forum NEWSboard Windows
    Antworten: 1
    Letzter Beitrag: 23-06-05, 14:28
  3. SQL - eindeutige ID für Satz ?
    By sim in forum NEWSboard Programmierung
    Antworten: 9
    Letzter Beitrag: 23-12-04, 10:48
  4. MS Access SQL Abfrage über ODBC
    By Helwo in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 19-03-02, 10:01
  5. Antworten: 10
    Letzter Beitrag: 09-03-01, 11:38

Berechtigungen

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