Einzelnen Beitrag anzeigen

bnreimer42

Registriert seit: 26. Mai 2013
Ort: Erlangen, Franken
124 Beiträge
 
Delphi 12 Athens
 
#19

AW: ID bei neuem Datensatz automatisch hochzählen

  Alt 4. Nov 2017, 09:21
Ich bin immer wieder verwundert, wie viele Gedanken man sich über die IDs machen kann.

Selbstverständlich sind die IDs reine technische Schlüssel und dürfen keine Semantik haben! Sonst ist das DB-Design "defekt".

Insbesondere darf man die IDs nie als Rechnungsnummer oder Aktenzeichen oder soetwas ähnliches benutzen. Dazu muss man eine eigenes Feld verwenden!

Daraus ergibt sich, dass IDs immer über AutoInc-Mechanismen (Oder bei Firebird Trigger mit gen_id()-Aufruf) erstellt werden sollten.

Ich mache mir auch keine Gedanken mehr, ob eine Tabelle ein ID-Feld benötigt: Es schadet nicht, wenn jede Tabelle eines hat und es hilft in jedem Fall, wenn man exakt einen Datensatz ansprechen will, z.b. beim Bearbeiten.


Einzig valide Frage ist, wie kommt man - um z.B. eine Fremdschlüsselbeziehung zu einem neuen Datensatz anzulegen, an den letzten ID-Wert und das geht prinzipiell immer erst, wenn der Datensatz in der DB gespeichert ist.

Bei u.a. Firebird gibt es dazu das wunderbare RETURNING-Konstrukt um bei einem Insert gleich Werte (z.B. die des ID-Feldes) zurückzubekommen.

Für FireDAC gibt es die schöne Doku-Seite http://docwiki.embarcadero.com/RADSt...lder_(FireDAC), die dazu alles zusammenfasst.
Björn Reimer
  Mit Zitat antworten Zitat