[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Mar 2002
    Beiträge
    5.392
    @Baldur,

    über den Trigger bekommt man das Sperrproblem auch nicht in den Griff: wenn mit dirty read gelesen wird, können zwei gleichzeitig dieselbe Nummer ziehen und der zweite rennt beim schreiben auf den Hammer. Lese ich mit Repeatable read sperrt das die ganze Table, lässt trotzdem den insert zu und schert sich einen Dreck um den Zugriffspfad.
    Besser als die MAX Arie ist es in jedem Fall sich die letzte vergebene Nummer in einer Tabelle zu merken und von dort zu holen und wegen der Sperre mit UPDATE SET maxnbr = maxnbr + 1 where table = sofort zu sperren. Als SQL Function gibt es da was auf meiner Freeware Seite.
    Null hat seine eigene Logik: NULL verknüpft mit irgendebbes (wie man in Hessen sagt) ist immer noch NULL und solange man 1 auf das Feld addieren darf, hat SQL nix dagegen.

    mfg

    Dieter Bender

    Zitat Zitat von Fuerchau
    Über die Triggerlösung geht das ja ganz gut, da ja bei jedem Insert (auch bei Recordlevel-Access) der Trigger auf jeden Fall aufgerufen wird.
    Man sollte natürlich einen Zugriffspfad auf diese Nummer legen, so dass SQL hier so optimieren kann, dass tatsächlich nur 1 Zugriff erfolgt.
    Ist das nicht der Fall (das könnte auch hier das Problem sein), dauert der Select natürlich relativ lange.

    Achja:
    "MAX(PSLFNR)+1 is null " ist falsch !!!
    "MAX(PSLFNR) is null" wäre richtig, da die Operation +1 im NULL-Fall zum SQL-Fehler führt und die ganze Operation nicht durchgeführt wird.
    Um MAX eben nur 1 Mal durchzuführen ist VALUE (COALESCE) schon besser (siehe oben).
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.809
    OK, mit der NULL gebe ich dir recht.

    Aber ich bleibe bei der Triggerlösung.
    Die Wahrscheinlichkeit des genau gleichzeitigen Inserts ist sehr gering.
    Wenn ich denn einen SQL-Fehler "Doppelter Schlüssel" bekomme, muss ich den Insert nur wiederholen, da ein 2. gleichzeitiger oder sogar 3. immer unwahrscheinlicher wird.
    Ich spare mir damit (den manipulierbaren) externen Zähler.
    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 2002
    Beiträge
    5.392
    @Baldur

    das mit der Wahrscheinlichkeit, it depends on...
    und wenn es denn passiert, dann ist das Unangenehme daran, dass der Wait Record (im default 60 sec.) abgewartet wird und dann der gewinnt. der später kommt.

    Dieter

    Zitat Zitat von Fuerchau
    Ich spare mir damit (den manipulierbaren) externen Zähler.
    PS: ich wusste garnicht, dass der jetzt extra Lizenzgebühren kostet, oder wird der bei CFINT mitgezählt?
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

Similar Threads

  1. SQL Sensitiver Cursor Probleme
    By Rincewind in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 18-12-06, 14:58
  2. Embedded SQL in VARPG
    By Squall in forum NEWSboard Programmierung
    Antworten: 23
    Letzter Beitrag: 18-10-06, 13:01
  3. SQL .. for update of (RPG embedded SQL)
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 01-06-06, 10:43
  4. Character verbinden in Embedded SQL
    By e_sichert in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 03-05-06, 11:47
  5. embedded SQL Performance Problem mit SCROLL
    By itec01 in forum IBM i Hauptforum
    Antworten: 9
    Letzter Beitrag: 16-09-04, 19:38

Berechtigungen

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