[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Mar 2014
    Beiträge
    33

    Thumbs down Frage zu CREATE TABLE

    Hallo,

    habe folgende Frage....
    ich möchte eine Datei erstellen und dabei eine vorhandene Referenzdatei benutzen.
    Das erste Feld eine SatzId ist allerdings nicht in der Referenzdatei und soll
    eine auto-increment Feld sein.

    Also eine Kombination aus:

    CREATE TABLE MyLib/MyFile (
    AD0SID DEC(9, 0) NOT NULL GENERATED ALWAYS AS IDENTITY
    (START WITH 1
    INCREMENT BY 1
    CYCLE
    MAXVALUE 999999999),
    ......

    und


    CREATE TABLE MyLib/MyFile AS
    (SELECT HK1 AS AD0HK1,
    HK2 AS AD0HK2
    FROM MyLib/MyRef))
    DEFINITION ONLY
    INCLUDING COLUMN DEFAULTS
    RCDFMT MyRecord;

    Kann da jemand helfen?

    Vielen Dank im Voraus.,,

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.236
    Step1 erstellen ohne Daten
    Create table as (select ...)
    Step2
    Alter Table add field ...
    Step 3
    insert into ...
    select .....
    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

  3. #3
    Registriert seit
    Mar 2014
    Beiträge
    33
    Hi,

    es geht nicht um Daten.
    Es geht rein um die Erstellung der "Satzbeschreibung".....
    Am Ende brauche ich eine leere Datei mit folgender Beschreibung:

    SatzID (unique Key) / auto-increment feld

    Feld 1 (Beschreibung ; Datentyp kommt aus der Referenzdatei)
    Feld 2 (Beschreibung ; Datentyp kommt aus der Referenzdatei)
    usw.

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.236
    Dann hör halt bei Step2 auf.
    Ob das SatzId-Feld am Anfang oder Ende steht ist doch unerheblich, schließlich ist es ja SQL.
    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
    Aug 2001
    Beiträge
    2.873
    Du könntest natürlich auch eine Identity Column (mit der gewünschten Definition) in Deine Referenz-Datei einfügen.

    Eine andere Alternative wäre eine eigene Tabelle, die nur eine Identity Column beinhaltet zu erstellen.
    Im CREATE TABLE Statement wird dann die Identity-Tabelle zu der Referenz-Datei dazu gejoint (CROSS JOIN).

    Sowohl bei Erweiterung der Referenz-Datei als auch bei Verwendung einer separaten Tabelle sollte die Option INCLUDING IDENTITY COLUMN ATTRIBUTES angegeben werden.

    Code:
    CREATE TABLE ...
    as (SELECT ....)
    With No Data
    INCLUDING IDENTITY COLUMN ATTRIBUTES
    Birgitta
    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

  6. #6
    Registriert seit
    Mar 2014
    Beiträge
    33
    Danke für die Hilfe,

    ich habe ein Identity Column in die Referenz-Datei eingefügt.
    Alles scheint zu klappen, ausser das die Heading Texte nicht in die erstellte Datei übernommen werden.
    Die Heading Texte von HERK und Typ fehlen?!?
    Warum auch immer....

    Referenzdatei:

    CREATE TABLE MyLib/MyRef (

    SID DEC(9, 0) NOT NULL GENERATED ALWAYS AS IDENTITY
    (START WITH 1
    INCREMENT BY 1
    CYCLE
    MAXVALUE 999999999),
    HERK CHAR(3) CCSID 273 NOT NULL DEFAULT '' ,
    TYP CHAR(3) CCSID 273 NOT NULL DEFAULT '' ,
    USR CHAR(10) CCSID 273 NOT NULL DEFAULT '' ,
    TIST TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP)
    RCDFMT MyRefR ;

    LABEL ON TABLE MyLib/MyRef IS 'Feldreferenzdatei';

    LABEL ON COLUMN MyLIb/MyRef (
    SID IS 'ID' ,
    HERK IS 'Herkunft' ,
    USR IS 'Benutzer' ,
    TIST IS 'Zeit' ) ;

    LABEL ON COLUMN MyLIb/MyRef (
    SID IS TEXT 'ID' ,
    HERK IS TEXT 'Herkunft' ,
    USR IS TEXT 'Benutzer' ,
    TIST IS TEXT 'Zeit' ) ;


    Meine neue Datei basierend auf der RefDatei:

    CREATE TABLE MyLib/MyFile AS
    (SELECT SID AS AD0SID,
    HERK AS AD0HERK,
    USR AS AD0USER,
    TIST AS AD0TIST
    FROM MyLib/MyFile)
    WITH NO DATA
    INCLUDING IDENTITY COLUMN ATTRIBUTES
    RCDFMT MyFileR;

    ALTER TABLE MyLIB/MyFile
    ADD PRIMARY KEY (AD0SID);

    LABEL ON TABLE MyLib/MyFIle IS 'Testdatei' ;

    LABEL ON COLUMN MyLIb/MyFile (
    AD0USER IS 'User letzte Änderung',
    AD0TIST IS 'Zeit letzte Änderung'
    );

    LABEL ON COLUMN MyLIb/MyFile (
    AD0USER IS TEXT 'User letzte Änderung',
    AD0TIST IS TEXT 'Zeit letzte Änderung'
    );

Similar Threads

  1. create table
    By KingofKning in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 18-05-15, 13:09
  2. SQL Table etc....
    By mk in forum NEWSboard Programmierung
    Antworten: 20
    Letzter Beitrag: 16-12-13, 12:11
  3. CREATE TABLE
    By Willi1 in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 03-05-02, 08:38
  4. Table QSQPTABL in QSYS2
    By KB in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 18-06-01, 07:35
  5. DATFMT bei CREATE TABLE
    By lorenzen in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 21-03-01, 13:44

Berechtigungen

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