[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jul 2005
    Beiträge
    1

    Anfänger Frage - Autowert?

    Hallo An alle,

    ich bin neu im System AS400. Eine Frage hab ich.

    Gibt es die Möglichkeit in deiner Tabelle einem Feld die Funktion eines Autowertes zu geben?
    Zum Beispiel: die Art einer laufenden Nummer

    oder gibt es noch einen anderen Weg?

    Grüsse
    Alex

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Einen Autowert wie in MS-Access/SQL-Server gibt es auf der AS/400 nicht.
    Man kann sich set neuestem eine Auto-ID (allerdings 40-Stellig) generieren lassen.

    Möchte man einen Autowert als einfache Zahl geht dies nur mittels BEFORE-INSERT-Trigger.
    Hierzu findest du mehrere Beispiele im Forum.
    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
    Nov 2004
    Beiträge
    61
    Warum so schrierig,

    Jede DB-Datei hat eine relative Satznummer (rrn - relativ record Number), die von der AS/400-Datenbank automatisch vergeben wird, egal ob die Datei geschlüsselt ist oder nicht. Warum verwendest Du nicht diese rrn.

    In SQL:
    select rrn(a) from lib/table a

    In RPG kann man bei Dateidefinition ohne Key direkt auf diese releatve Satznummer zugreifen. Beim sequentiellen Lesen wird diese in spezifischen Dateiinformationsstruktur zurückgeliefert.

  4. #4
    Registriert seit
    Sep 2001
    Beiträge
    96

    Smile doch ab V5R2 geht es mit DB2/400 SQL

    Zitat Zitat von Alex79
    Hallo An alle,

    ich bin neu im System AS400. Eine Frage hab ich.

    Gibt es die Möglichkeit in deiner Tabelle einem Feld die Funktion eines Autowertes zu geben?
    Zum Beispiel: die Art einer laufenden Nummer

    oder gibt es noch einen anderen Weg?

    Grüsse
    Alex

    doch, es wird nicht nur eine 40-stellige ID geliefert,
    dieses Beispiel erzeugt 9-stellige ID's (Integer)

    =============================================

    folgende Felder in der Tabelle werden erzeugt:

    Feld Art Länge
    OID INTEGER 9
    NAME CHARACTER 40



    CREATE TABLE TESTCOLL/TAB4711
    (OID integer GENERATED always AS IDENTITY
    (START WITH 1 , INCREMENT BY 1) ,
    NAME CHAR (40 ) )
    ;

    INSERT INTO TESTCOLL/TAB4711
    (NAME) VALUES('TEST_TEST')
    ;
    INSERT INTO TESTCOLL/TAB4711
    (NAME) VALUES('TEST2_TEST2')
    ;

    select * from TESTCOLL/TAB4711
    ;

    OID NAME .
    1 TEST_TEST
    2 TEST2_TEST2

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Die RRN(*) sollte per SQL nicht verwendet werden, da diese immer einen Tablescan erzwingt.
    Ausserdem ändert sich diese bei z.B. einem RGZPFM bzw. durch REUSEDLT(*YES) wird die gleiche RRN wieder verwendet.
    Damit bietet RRN nur eine temporäre und keine statische Eindeutigket (z.B. zur Verwendung von ForeignKey's, Constraint).
    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

Similar Threads

  1. Frage zum Befehl STRPCCMD
    By stoerfang in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 24-01-13, 10:27
  2. SQL Frage
    By Bratmaxxe in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 24-01-07, 19:17
  3. Frage zu QZDFMDB2
    By Freezer in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 23-10-06, 21:02
  4. Frage zu SQL UserDefinedFunction
    By cbe in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 24-08-06, 17:30
  5. CA und VPN (die nn. Frage dazu)
    By malzusrex in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 23-08-06, 17:12

Berechtigungen

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