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

    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
    18.104
    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: http://www.fuerchau.de/software/upload400.htm
    BI? Da war doch noch was: http://www.ftsolutions.de

Ähnliche Themen

  1. Performancevorteil mit Constraints?
    Von lorenzen im Forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 31-10-01, 09:02

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •