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

    Angry Trigger und Ladethematik

    Guten Morgen Forum,

    als DB2 bzw. iSeries anfänger stellen sich mir mehrere Fragen

    1. Wie kann ich in einem Before-Insert-Trigger einen künstlichen Primary Key erzeugen(Sequenz habe ich erstellt weiß aber nicht wie ich den Wert ermitteln kann, bei Oracle geht's so, Select SeqName.nextval into VarName from dual, funktioniert aber hier nicht. anschließend im Trigger :NEW.PK_feld := VarName)

    2. Wie kann ich Textdateien in eine Tabelle laden(ähnlich Oracle SQL-Loader)?

    Wie ihr hier sicher bemerkt werden alle Ora-DB's auf DB2 migriert.
    Vielen Dank im voraus für eure Hilfe

    Glück auf

    HP Kahn

  2. #2
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    Hallo,

    ad 1: before insert Trigger dürfen auf DB2 keinen SQL update machen, das wird wohl einen work around brauchen:
    entweder external Trigger, oder Auto increment Felder (wie heißt der Typ gleich nochmal - identity?), oder im After insert Trigger machen, aber dann brauchts auch noch eine SQL Function und vom Transaktions Handling ist das eher kritisch.

    ad2: CPYFRMIMPF kann sowas ähnliches, wenn es denn überhaupt korrekt funktioniert, was nur bei ausgesuchten Patch Ständen zu stimmen scheint.

    mfg

    Dieter Bender

    Zitat Zitat von HPKahn
    Guten Morgen Forum,

    als DB2 bzw. iSeries anfänger stellen sich mir mehrere Fragen

    1. Wie kann ich in einem Before-Insert-Trigger einen künstlichen Primary Key erzeugen(Sequenz habe ich erstellt weiß aber nicht wie ich den Wert ermitteln kann, bei Oracle geht's so, Select SeqName.nextval into VarName from dual, funktioniert aber hier nicht. anschließend im Trigger :NEW.PK_feld := VarName)

    2. Wie kann ich Textdateien in eine Tabelle laden(ähnlich Oracle SQL-Loader)?

    Wie ihr hier sicher bemerkt werden alle Ora-DB's auf DB2 migriert.
    Vielen Dank im voraus für eure Hilfe

    Glück auf

    HP Kahn
    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
    Aug 2001
    Beiträge
    2.928

    Sequence

    Hallo,

    die SEQUENCE kann direkt beim Insert-Statement angegeben und eingefügt werden.
    Es ist kein Trigger notwendig.

    Beispiel:
    PHP-Code:
    CREATE SEQUENCE MySequence 
    START WITH 10 INCREMENT BY 10 
    PHP-Code:
    INSERT INTO MyTrgTable(MySeqCol2
    VALUES(NEXT VALUE FOR MySequence123 
    Ebenso müsste ein SET-Statement in einem SQL-Before Insert Trigger funktionnieren.
    PHP-Code:
    Create Trigger MYSchema.MyTrgTable01
               Before Insert on MyTrgTable
               Referencing 
    NEW ROW as Ins
               
    For Each Row
               Mode DB2ROW
      BEGIN Atomic
           set Ins
    .MySeq NEXT VALUE FOR MySequence;
      
    END
    Leider kann ich es nicht ausprobieren, da ich im Moment keinen Zugriff auf eine Maschine mit Release V5R3M0 habe.
    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

Similar Threads

  1. SQL Trigger
    By Jenne in forum NEWSboard Programmierung
    Antworten: 0
    Letzter Beitrag: 19-01-07, 09:24
  2. SQL Trigger
    By bigmoon in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 14-09-06, 18:26
  3. create view oder constraint oder trigger oder ... ?
    By antvik in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 02-08-06, 18:04
  4. Trigger
    By peter.kinne in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 20-04-06, 10:21
  5. Trigger / ILE RPG
    By Frank Pusch in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 17-05-01, 09:34

Berechtigungen

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