[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Feb 2003
    Beiträge
    41

    Autoincrement und Constraints

    Hallo Leute,
    Ich habe festgestellt, dass bei einem Insert auf eine Tabelle mit Autoincrement zuerst der Primary-Key generiert wird und dann die Constraints geprüft werden dh. falls ein Constraint das Hinzufügen verhindert so geht ein Primary-Key 'verloren'. Kann man der Datenbank ev. beibringen, dass die Generierung von Primary-Key erst zum Schluß erfolgt? Oder gibt es ev. andere Methoden um das 'verbrennen' von Primary-Keys zu verhindern?
    Vielen Dank im Voraus
    mfg Roman

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Leider nein, da Primary Key die höchste und somit erste Bedingung ist.
    Durch den Insert müssen ja erst alle Feldinhalte gefüllt werden, bevor ggf. weitere Constraints überhaupt geprüft werden können, auch wenn die Identity-Spalte für einen Ref-Constraint oder Unique-Contraint gar nicht benötigt wird. Die eigentliche Prüfung findet dann eben erst beim tatsächlichen Insert statt.

    Aber eine Lückenlosigkeit kannst du da sowieso nicht garantieren, da bei korrekter Transaktionssteuererung durch einen Rollback aus anderen Gründen die Nummer sowieso weg ist.
    Du musst berücksichtigen, dass ein Insert ja durchaus parallel von mehreren Sitzungen erfolgen kann.

    Willst du eine lückenlose Nummerierung, musst du nach alter klassischer Sitte eine Nummernvergabe-Tabelle verwenden, die eben bis zum Commit/Rollback durch Lock's keine weitere Nummereierung mehr zulässt.
    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. Performancevorteil mit Constraints?
    By lorenzen in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 31-10-01, 10:02

Tags for this Thread

Berechtigungen

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