[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte
  1. #1
    Registriert seit
    Dec 2007
    Beiträge
    14

    SQL INSERT if not exist then update

    Hallo!

    Wie kann ich auf der DB2 ein "Insert if not exist then update" Statement absetzen?

    Gibt es sowas?

    In MYSQL gibt es das ON DUPLICATE KEY oder REPLACE Statement.

    MERGE kann ich leider nicht verwenden, da ich nicht die neueste DB2 Version habe.

    Ich muss ein Feld überprüfen und wenn dies existiert, dann den kompletten Satz updaten ansonsten einen neuen Satz schreiben.

    Bitte um Hilfe!

    Danke!

    Grüsse
    chrisonline

  2. #2
    Registriert seit
    Aug 2001
    Beiträge
    2.869
    In der DB2 gibt es kein solches Statement, d.h. Du musst schon mehrere Statements ausführen.

    Am einfachsten ist, Du versuchst einen Update. Wurde keine Zeile aktualisiert (kann im embedded SQL über SQLER3 oder über GET DIAGNOSTICS-Statement geprüft werden), den Insert ausführen.

    Du kannst natürlich auch zunächst über ein Select-Befehl prüfen ob das Feld bzw. der Inhalt vorhanden ist und je nach dem entweder einen Update oder Insert ausführen.

    Übrigens arbeitest Du überhaupt auf der iSeries?
    MERGE existiert auch in der 6.1 Version nicht!

    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

  3. #3
    Registriert seit
    Dec 2007
    Beiträge
    14
    Oh habe gerade gesehen dass das MERGE Statement auf der DB2 für Linux, Unix und Windows ist und nicht für die iSeries!

    Vielen Dank für deinen Beitrag, dann werde ich es wohl mit 2 Statements machen müssen.

    Finde ich jedoch schwach dass es sowas nicht gibt für die DB2 auf der iSeries... IBM erhält somit von mir eine Rüge ;-)

    Grüsse
    Christian

  4. #4
    Registriert seit
    Jun 2001
    Beiträge
    1.973
    Moin zusammen,
    ich wärme dieses Thema mal auf ....
    in der Hoffnung das es mittlerweile was gibt.

    Create or Replace als Befehl, um die Datei zu erstellen gibt es ja auch (hab's noch nicht gemacht)

    Gruß
    Robi
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  5. #5
    Registriert seit
    Mar 2002
    Beiträge
    5.286
    ... man kann sich natürlich den MERGE zurecht biegen, indem man sich eine "Tabelle" mit einem Satz im SQL Statement virtuell erzeugt, aber ob das was besser macht als die zwei Statements ist Geschmacksache. Mein Geschmack ist jedenfalls: einfache Konstrukte bevorzugen...

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  6. #6
    Registriert seit
    Jun 2001
    Beiträge
    1.973
    Ja, die 'Hand am Arm' Methode ist schon klar.
    aber bei rd. 50 Dateien mit bis zu 30 !!!! Keyfeldern ist das mühsam.
    Und da es manchmal etwas dauert, bis sinnvolle Änderungen im SQL bei mir ankommen hoffte, das es hier was neues gibt.
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Seit V4R5 gibt es mein Tool SQLCPY, mit dem man genau so was machen kann (neben vielen anderen Dingen).
    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

  8. #8
    Registriert seit
    Mar 2002
    Beiträge
    5.286
    Zitat Zitat von Robi Beitrag anzeigen
    Ja, die 'Hand am Arm' Methode ist schon klar.
    aber bei rd. 50 Dateien mit bis zu 30 !!!! Keyfeldern ist das mühsam.
    Und da es manchmal etwas dauert, bis sinnvolle Änderungen im SQL bei mir ankommen hoffte, das es hier was neues gibt.
    ... bei einem compound Primary key mit 30 Feldern könnte das Problem auch woanders liegen und bei Dateien mit mehreren unique Bedingungen wäre ich mit insert on duplicate key sehr vorsichtig - das wird dann schnell komplex: sieh dir mal die entsprechenden Diskussionen in MySQL und PostgreSQL (upsert) mal an.
    Im übrigen könnte man sich da auch noch stored procedures basteln (Default handling kann man generieren und Sonderlocken dann einbauen)

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  9. #9
    Xiaoguo3 Besucher/Guest
    Das klingt sehr gut und schön!







    samsung note 4 handyhülle

  10. #10
    Registriert seit
    Nov 2007
    Beiträge
    371
    Ein Merge funzt doch auf der schwarzen Kiste .......

  11. #11
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Wie Birgitta schon schrieb, erst ab V7R1 verfügbar.
    Aber wer arbeitet denn noch mit alten Betriebssystemen, wo es ab heute doch Windows 10 für alle Plattformen gibt (wieso dann nicht für die AS/400, iSeries, i5, System i?)!
    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

  12. #12
    Registriert seit
    Nov 2007
    Beiträge
    371

    Wink

    Jupp das stimmt schon aber 7.1 hat ja auch schon ein paar jährchen auf dem Buckel.
    Windoof auf Iseries ... Wär ich schon lange dafür ))

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, 09:53
  2. SQL Insert in schleife
    By Robi in forum IBM i Hauptforum
    Antworten: 20
    Letzter Beitrag: 16-03-09, 11:32
  3. Update Syntax SQL
    By wuwu in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 18-07-06, 16:31
  4. Antworten: 3
    Letzter Beitrag: 06-06-06, 16:57
  5. SQL .. for update of (RPG embedded SQL)
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 01-06-06, 10:43

Berechtigungen

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