[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    May 2005
    Beiträge
    103

    Question Update während Insert - Sätze kopieren

    Hallo zusammen,

    gibt es eine Möglichkeit Sätze innerhalb einer Datei zu kopieren und dabei zu ändern?

    Beispiel: Ich möchte alle Kunden-Sonderpreise innerhalb unserer Sonderpreisdatei auch einem anderen Kunden zuordnen, diese aber um 3% erhöhen.

    Aufbau:
    KdNr (7,0), TNr (15A), Preis (9,3)

    Bisher habe ich die Sonderpreisdatei ohne Sätze dupliziert, die relevanten Sätze per Insert eingefügt und anschließend per Update auf die neue KundenNr und den entsprechenden Preis geändert. Anschließend wiederum per Insert in die Sonderpreisdatei eingefügt.

    Insert into MyLib/MyDuplicate
    Select * from Sonderpreisdatei
    Where KdNr = 4711
    174 Sätze eingefügt

    Update MyLib/MyDuplicate set KdNr = 4712, Preis = round(Preis*1,03, 2)
    174 Sätze geändert

    Insert into Sonderpreisdatei
    Select * from MyLib/MyDuplicate
    174 Sätze eingefügt

    Ist der Umweg über die leere Datei notwendig, oder kann ich - ähnlich einem Subselect - die Datensätze während des Inserts ändern?
    Interessant wäre dies auch für Embedded SQL-Belange, da ich hier nicht erst recht nicht über eine Zwischendatei arbeiten möchte, um Sätze zu duplizieren und zu ändern. Konkret würde ich gerne Sätze zur Laufzeit duplizieren und mit einem anderen Status versehen.

    MfG,
    Tobias

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Dies ist eine typische Triggergeschichte.
    DerTrigger kann bei jedem BEFORE-Insert/Update aufgerufen werden und (falls erlaubt) auch Änderungen des Puffers vornehmen.

    SQL selber erlaubt dies nicht.

    Du kannst aber deinen "Select * " ja so modifizieren, dass die gewünschten Daten bereits ausgewählt sind (Berechnungen, Konstanten usw.).
    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 2003
    Beiträge
    2.403
    Code:
    Insert into MyLib/MyDuplicate
    Select 4712, TNr, round(Preis*1,03, 2) from Sonderpreisdatei
    Where KdNr = 4711

  4. #4
    Registriert seit
    May 2005
    Beiträge
    103
    Vielen Dank für die Antworten. Mit Pikachus Code funktionierts genau so, wie ich es wollte - Dankeschön!!

    Einziger Wermutstropfen ist hier die Einzelauflistung der Felder, die nicht zu ändern sind. Insofern werde ich im interaktiven SQL-Umfeld wohl doch lieber mit der Zwischendatei arbeiten, da es einfach schneller geht, als alle Felder zu benennen.

Similar Threads

  1. SQL Update aus zwei Dateien mit 3 Schlüsselfeldern
    By mk in forum NEWSboard Programmierung
    Antworten: 13
    Letzter Beitrag: 13-07-12, 08:53
  2. SQL Insert in schleife
    By Robi in forum IBM i Hauptforum
    Antworten: 20
    Letzter Beitrag: 16-03-09, 10:32
  3. Update Syntax SQL
    By wuwu in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 18-07-06, 15:31
  4. SQL .. for update of (RPG embedded SQL)
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 01-06-06, 09:43
  5. Kopieren mit SQL (insert)
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 11-10-05, 18:01

Berechtigungen

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