Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: AutoInc im Primärschlüssel-Feld

  Alt 10. Aug 2005, 16:55
Zitat von Stevie:
Ich möchte auf jeden Fall die von der DB generierte ID benutzen und mir nicht selber eine ermitteln.
Dazu brauche ich eine Möglichkeit, mir nach dem Post die letzte ID zu ermitteln,
damit dieses Komische Verhalten in der TQuery nicht auftritt.
Ein AutoInc-Feld ist für den Programmierer sehr bequem, da es sich um nix kümmern muss, aber es gibt
einige gravierende Nachteile:
Die Datenbank (na ja die BDE) erzeugt den Wert des Primärschlüssels.
Deine Anwendung kennt diesen Wert nicht und es gibt auch keine zuverlässige Methode diesen Wert
abzufragen.
Grund: du könntest ja einen Datensatz einfügen, der in allen Feldern identisch zu einem bestehenden Datensatz ist.
Nur das Primärschlüsselfeld wäre dann unterschiedlich, aber genau das kennst du ja nicht!!!
Dieses SELECT IDENTITY_VAL_LOCAL() ist ein Krücke, die nur bei wenigen Datenbanken funktioniert
und nicht portierbar ist.

Es gibt nur eine saubere Methode, wie man AutoIncfelder implementieren kann und das benötigt sog. Generatoren. (und die BDE kennt diese nicht)
Eine Paradox-Tabelle hat einen internen & unsichtbaren Generator für das AutoInc-Feld.
Dieser Generator kann von Aussen nicht gesetzt werden.
Wenn durch ein Programmabsturz der interne Generator z.B. auf 47 steht, aber in der Tabelle schon
ein Datensatz mit Key 47 gespeichert ist, dann kann man keinen neuen Datensatz mehr speichern!!!
->Fehler doppelter Primärschlüssel blah...

Du solltest die AutoInc-Felder vermeiden, wie der Teufel das Weihwasser.

Schreib einfach, was du in deiner Tabelle speichern möchtest und wir sagen dir, wie der Primärschlüssel
gebaut werden kann.
Andreas
  Mit Zitat antworten Zitat